从返回数组函数中使用foreach检索数据

时间:2019-03-03 12:59:13

标签: php mysql

我在功能以及如何获取数据方面遇到麻烦。这就是我得到的。

public function getImages()
{
    $array = array();

    //Test query
    $query = $this->connect()->query("SELECT * from user");
    while ($row = $query->fetch()) {
        $array[] = $row;
        return $array;
    }
}

现在我正在调用此函数,但是我无法使用foreach访问该数组。

include "header.html";
include "autoload.php";
spl_autoload_register('my_autoloader');

$users = new User;
$users->getImages();

foreach ($users as $value) {
  echo $value["username"];
}

我在做什么错?我只得到一个结果,但是数据库中有很多结果。或者,如果我在foreach中调用$ array,则表示未定义。

2 个答案:

答案 0 :(得分:1)

几件事。首先,您的函数只会返回其中包含 one 元素的数组。如果要完成数组的填充,请在循环之后再返回:

while ($row = $query->fetch()) {
    $array[] = $row;
}
return $array;

第二,您要遍历具有该函数的对象,而不是从该函数返回的值。获取返回值并对其进行迭代:

$userDAO = new User;
$users = $userDAO->getImages();

foreach ($users as $value) {
    echo $value["username"];
}

答案 1 :(得分:1)

您只需要将return语句放入while循环之外即可。

public function getImages() { 
      $array = array(); //Test query
      $query = $this->connect()->query("SELECT * from user"); 
       while ($row = $query->fetch()) { 
            $array[] = $row; 
        }
        return $array;
  }