PHP迭代从函数返回的数组

时间:2015-06-04 06:10:03

标签: php arrays loops foreach

您好我有一个类文件,其中包含从mySQL数据库中检索用户的函数。代码如下:

class userdbase
{
    public function fetchUsers()
    {
        $db = new mysqli('localhost', 'user', 'pass', 'dbase');

        if($db->connect_errno > 0)
        {
            die('Unable to connect to database [' . $db->connect_error . ']');
        }

        $sql = "SELECT username from `users`";

       if(!$result = $db->query($sql))
       {
           die('There was an error running the query [' . $db->error . ']');
       }

       while($row = $result->fetch_assoc())
       {
           $users[] = $row['username'];
       }
       $result->free();
       $db->close();
       return array($users);
    }
}

上面的代码使用print_r($ dbase-> fetchUsers())返回如下数组:

Array
(
[0] => Array
    (
        [0] => user1
        [1] => user2
        [2] => user3

        )

)

我无法在主文件中循环遍历数组,在该文件中我引用了类中的函数。我使用的代码如下:

<?php

require("dbase.php");

$dbase = new userdbase();

 foreach($dbase->fetchUsers() as $result)  //this doesn't work
 {
    print "$result"; 
 }
?>

更精通PHP的人能指出正确的方法吗? 提前谢谢!

2 个答案:

答案 0 :(得分:1)

在此处构建用户数组[]:

while($row = $result->fetch_assoc())
{
    $users[] = $row['username'];
}

$ users是一个数组,但是当你返回它时,将它包装在array()中意味着你返回的数组数组不是你当时处理的数组。

解决方案只是返回$ users。

答案 1 :(得分:1)

而不是

return array($users);

只返回

return $users;

并简单地应用您的foreach循环