$pie = array('Apple' => 1, 'Cherry' => 3, 'Pumpkin' => 6);
reset($pie);
while (list($k, $v) = each($pie)) {
echo "$k => $v\n";
$desserts[]=$pie;
}
如果$desserts[]=$pie
行被注释掉,则此代码块按预期方式执行。在while循环中分配数组会导致无限循环
为什么当它未被注释时会进入无限循环?
我不明白为什么发生这种情况。这是什么不能做的完美例子,但我不明白为什么整个数组打印一遍又一遍。我认为只是第一片会重复。
是的,这是一个不做的例子。我无法得到这种行为。如果指针正在重置,那么为什么输出不会只是“Apple => 1”? – Swoop
@Swoop PHP在修改方法时可以与数组一起使用。当你使用'$ desserts [] = $ pie;'这些值实际上并没有被复制到'$ desserts'中,直到有些东西被改变。所以'重置'可能不会发生,直到PHP看到'$ pie'和'$ desserts'不再是相同的,这可能是'$ pie'到达数组末尾时。 – cgTag