为什么以下PHP代码会创建无限循环?

时间:2011-04-19 11:24:56

标签: php infinite-loop

$arr = array('a' => 1, 'b' => 2, 'c' => 3);
reset($arr);
while (list($k, $v) = each($arr)) {
    print "$k => $v\n";
    $h[] = $arr;
}

2 个答案:

答案 0 :(得分:2)

使用foreach($arr as $k => $v)代替reset($arr); while(...)

它失败的原因是$h[] = $arr;重置内部数组指针,如果它在结尾处,那么循环从头开始。

答案 1 :(得分:0)

ThiefMaster是对的。通过赋值$arr,当您在最后一个元素时重置内部指针。使用foreach()时,您将使用原始数组的副本。