我正在使用PHP PDO运行查询,该查询返回总共139个字节的关联数组。
当我将结果分配给while()
循环中的值时,它无法说它耗尽了内存,但这没有意义。尝试的分配对可用的内容微不足道。
如果我在foreach()
循环中运行它,它可以正常工作。
如果我ini_set('memory_limit', '-1');
,页面永远不会加载。似乎存在无限循环。
是否有其他可能导致此错误被抛出的内容?在使用while()
while($rows = $stmt->fetchAll())
循环进入无限循环的原因
答案 0 :(得分:0)
$stmt->fetchAll()
返回如下数组:
array(
array("id"=>1,"name"=>"Dave"),
array("id"=>2,"name"=>"John")
)
即一组记录。
使用foreach
遍历此数组。使用while
不会。由于您的数组始终存在,while
将始终为真!
foreach
最常用,但你可以这样做:
$result = $stmt->fetchAll();
while($row = array_shift($result)) { ... }
这是有效的,因为$result
数组将用完行,此时while
将为false并结束。