不同的结果是'而'并且' foreach'

时间:2014-04-28 14:35:12

标签: php foreach while-loop

当使用'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'的第二次犯罪中做错了什么? 非常感谢你!

2 个答案:

答案 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停止。