我在功能以及如何获取数据方面遇到麻烦。这就是我得到的。
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,则表示未定义。
答案 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;
}