繁体   English   中英

打印出php数组的问题

[英]Issues in printing out php array

不幸的是, 我正在努力用PHP打印一些数组项,并希望有人可以帮助我。 有点尴尬:)我想我可能使用了不正确的数组? 我试图从数据库中构建一个应用程序对象,一旦完成,我就试图对其进行迭代并打印一些基本细节。 我还包括了单独的Application类。

<?php

include("application.php");

$applicationsForUser = array();

if(isset($_POST['submit'])){
    $username=$_POST["username"];
    $password=$_POST["password"];
    $userid = logUserIn($username, $password);
    if($userid > 0){
        getAppInformation($userid);
        foreach ($applicationsForUser as $app) {
            echo $app->$getUserid() . $app->$getName();
        }
    }
}

function getAppInformation($userid){
    $conn = new mysqli('localhost:3306', 'root', '', 'clientportal');
    if ($conn->connect_errno > 0) {
        die('Could not connect: ' . mysql_error());
    }else{
        //we have connected to the database
        $sql = "SELECT * FROM application WHERE userid = '$userid'";
        if(!$val = $conn->query($sql)){
            die('There was an error running the query [' . $db->error . ']');
        }else{
            $index = 0;
            while($row = $val->fetch_assoc()){
                $userid = $row['userid'];
                $name = $row['name'];
                $dateCreated = $row['date'];
                $invoice = $row['invoiceid'];
                $comment = $row['commentsid'];              
                $application = new Application($userid, $name, $dateCreated, $invoice, $comment);
                $applicationsForUser[$index] = $application;
                $index++;
            }
        }
    }
    $conn -> close();   
}




<?php
class Application {

    var $userid;
    var $name;
    var $dateCreated;
    var $invoice;
    var $comment;

    function Application($userid, $name, $dateCreated, $invoice, $comment) {
        $this ->userid = $userid;
        $this ->name = $name;
        $this ->dateCreated = $dateCreated;
        $this ->invoice = $invoice;
        $this ->comment = $comment;
    }

    function getUserid(){
        return $this ->userid;
    }

    function getName(){
        return $this ->name;
    }

    function getDateCreatd(){
        return $this ->dateCreated;
    }

    function getInvoice(){
        return $this ->invoice;
    }

    function getComment(){
        return $this ->comment;
    }
}
?>

您的问题是,$ applicationsForUser应该是全局的。 因此,您需要使用

function getAppInformation($userid){
    global $applicationsForUser;

否则,您的foreach会在此处遍历一个空数组:

    getAppInformation($userid);
    foreach ($applicationsForUser as $app) {

不要使用全局变量:

您没有在尝试遍历数组之前初始化数组。

<?php

include("application.php");


if(isset($_POST['submit'])){
    $username=$_POST["username"];
    $password=$_POST["password"];
    $userid = logUserIn($username, $password);
    if($userid > 0){
        // get application information
        $applicationsForUser = getAppInformation($userid);
        foreach ($applicationsForUser as $app) {
            echo $app->$getUserid() . $app->$getName();
        }
    }
}

function getAppInformation($userid){
    $applicationsForUser = array();
    $conn = new mysqli('localhost:3306', 'root', '', 'clientportal');
    if ($conn->connect_errno > 0) {
        die('Could not connect: ' . mysql_error());
    }else{
        //we have connected to the database
        $sql = "SELECT * FROM application WHERE userid = '$userid'";
        if(!$val = $conn->query($sql)){
            die('There was an error running the query [' . $db->error . ']');
        }else{
            $index = 0;
            while($row = $val->fetch_assoc()){
                $userid = $row['userid'];
                $name = $row['name'];
                $dateCreated = $row['date'];
                $invoice = $row['invoiceid'];
                $comment = $row['commentsid'];              
                $application = new Application($userid, $name, $dateCreated, $invoice, $comment);
                $applicationsForUser[$index] = $application;
                $index++;
            }
        }
    }
    $conn -> close();
    return $applicationsForUser; 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM