无意破坏php数组元素?

kla*_*ang 1 php arrays foreach

下面这段PHP代码将破坏数组的最后一个元素

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

输出是:

Array
(
    [0] => A
    [1] => B
    [2] => C
    [3] => D
    [4] => D
)
Run Code Online (Sandbox Code Playgroud)

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

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

ale*_*exn 5

这篇博文更好地解释了它.您还应该在PHP.net上查看此错误报告.