无意破坏php数组元素?

时间:2011-02-11 06:50:26

标签: php arrays foreach

下面的php代码会破坏数组的最后一个元素

<?php
$arr = array('A','B','C','D','E');
foreach ($arr as &$val) {}
foreach ($arr as $val) {}
print_r($arr);
?>

输出结果为:

Array
(
    [0] => A
    [1] => B
    [2] => C
    [3] => D
    [4] => D
)

可以通过在两个unset($val);语句之间调用foreach来修复代码。

为什么最后一个元素被破坏?

1 个答案:

答案 0 :(得分:5)

This blogpost比我更好地解释了它。您还应该在PHP.net上查看this bug report