首页 > 新闻资讯 > php使用foreach循环时最后一组数据重复,原因是使用了“&”符号

php使用foreach循环时最后一组数据重复,原因是使用了“&”符号

发表时间:2020-07-01 16:36:05     浏览次数:1590

新手很容易犯这样一个错误,直接拿网上的例子来说明问题。


代码:

//数组
$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.


参考链接:

https://www.imooc.com/wenda/detail/583237

相关新闻