当使用'while'循环遍历数组时,我得到了很好的结果,但是当我对foreach执行相同的操作时,我得不到相同的结果。 SELECT语句返回两行:
731个
732
$data = $mysqli->query("SELECT ...");
while($item = $data->fetch_array())
{
echo $item[0]."<br />";
}
返回:
731个
732个
foreach ($data->fetch_array() as $item)
{
echo $item."<br />";
}
返回:
731个
731个
我在'foreach'的第二次犯罪中做错了什么? 非常感谢你!
答案 0 :(得分:0)
那是因为数组在返回的结果集中表示一行。在foreach
循环中,$data->fetch_array()
只会执行一次,而且只会保留一行(即731)。您必须再次调用fetch_array()
才能获得下一条记录。你必须使用while
循环来获取记录并首先将它们推入数组,然后使用foreach
:
$resultset = array();
while($item = $data->fetch_array()) {
$resultset[] = $item;
}
foreach ($resultset as $row) {
echo $row;
}
答案 1 :(得分:0)
每当您调用fetch_array
方法时,它会从数据库返回一行作为包含字段值的数组。
因此,它不会返回所有行,而是一行行中的所有字段。
当您再次调用它时,它将返回数组,并在第二行 中包含字段。
当返回查询中的所有行时,fetch_array()
将返回FALSE
。在while循环中,$row
变量变为false
并且lopp停止。