新手很容易犯这样一个错误,直接拿网上的例子来说明问题。
代码://数组
$arr = ["foo", "bar", "baz"];
//循环
foreach ($arr as &$item) {
/* do nothing by reference */
}
//打印
print_r($arr);
//循环
foreach ($arr as $item) {
/* do nothing by value */
}
//打印
print_r($arr); // $arr has changed....why?
输出:Array
(
[0] => foo
[1] => bar
[2] => baz
)
Array
(
[0] => foo
[1] => bar
[2] => bar
)
这是发现两次输出结果不一样,第二次输出不是我们预期的结果,数组里最后一个元素被替换,和上一个元素重复。其实原因就是第一次循环时使用了“&”符号,这个问题解释清楚比较绕,不作过多解释,直接说解决办法,在第二次循环之前加如下代码:unset($item); // This will fix the issue.
参考链接: