没用&之前,要改变数组中的元素是这样做的⬇️
$arr = array(1,2,3); foreach ($arr as $k => $v){ $arr[$k]=$v * 2; } // now $arr is array(2, 4, 6)
用了&,是这样的⬇️
$arr = array(1,2,3); foreach($arr as $k => &$v) { $v = $v * 2; } // now $arr is array(2, 4, 6)
当用了&引用,记得要用unset($v)来将其销毁 ,或者及时改变变量名,否则会出现以下情况⬇️
$arr = array(1,2,3); foreach($arr as $k => &$v) { $v = $v * 2; } // now $arr is array(2, 4, 6) foreach($arr as $k => $v) { //第1遍循环,隐含操作$v=$arr[0]被触发,由于此时$v仍然是$arr[2]的引用,即相当于$arr[2]=$arr[0],$arr变成2,4,2 //第2遍循环,$v=$arr[1],即$arr[2]=$arr[1],$arr变成2,4,4 //第3遍循环,$v=$arr[2],即$arr[2]=$arr[2],$arr变成2,4,4 echo "$k", " => ", "$v",'</br>'; }