PHP foreach &$ 引发的bug

在使用foreach &$来更新数据的时候,造成数据被更新掉了

$arr = array(1,2,3,4,5);

foreach ($arr as &$row) {
    $row += 1;
}

print_r($arr);//2 3 4 5 6

$arr2 = array(11,12,13,14);
foreach ($arr2 as $row) {
    print_r($row);//11        12        13        14        
    print_r($arr);//2 3 4 5 11    2 3 4 5 12   2 3 4 5 13    2 3 4 5 14     
}

在第一次foreach的时候,row没有自动释放,造成还指向arr的最后一个选择,第二次循环使用row,的时候。row执行arr的最后元素, 将arr2的值赋值给了arr的最后元素,造成数组被更改。

在第二次使用 row的时候,可以使用unset,释放row

原文地址:https://www.cnblogs.com/yyf573462811/p/7647150.html