foreach遍历中的引用

$arr = array(1,2,3);
foreach($arr as &$v){}

foreach($arr as $v){
    echo $v;
}

foreach遍历中的引用分析

第一次foreach循环

foreach($a as &$v) {$v *= $v;}

这里由于是引用绑定,所以相当于对数组中的元素执行:

$v = &$a[0]; 
$v = &$a[1]; 
$v = &$a[2];

留下一个引用变量没有unset将数组最后一个变量变成引用。

第二次foreach循环

foreach($a as $v){
     echo $v;
}

类似与执行:

$v = $a[0]; 
$v = $a[1];
$v = $a[2];

如何杜绝foreach的引用隐患?

方法一

foreach($a as $k=>&$v){

unset($v);
}

方法二

foreach($a as $k=>&$v){

}
unset($v)

foreach引用的好处

节省时间、空间

Last updated