在使用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