打印出php数组的问题

时间:2014-06-14 09:25:27

标签: php arrays

不幸我正在努力在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;
    }
}
?>

2 个答案:

答案 0 :(得分:1)

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

function getAppInformation($userid){
    global $applicationsForUser;

否则你的foreach在这里迭代一个空数组:

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

答案 1 :(得分:0)

不要使用全局:

在尝试循环之前,您没有初始化数组。

<?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; 
}