php中 foreach引用(&)的问题

来源:互联网 发布:seo转行前端开发 编辑:程序博客网 时间:2024/05/22 01:49
$a = array("1", "2", "3");
foreach ($a as &$val)
{
echo $val." ";
}
echo $val." <br>";
foreach ($a as $val)
{
echo $val." ";
}
echo $val." ";

输出:
1 2 3 3 

1 2 2 2 


原因:
foreach ($a as &$val)
把$val指向每个元素的地址。当循环完的时候,$val指向的是$a最后一个元素3的地址。
第二次遍历foreach ($a as $val)将每个元素依次赋值到最后一个地址上。
数组$a的变化循环第一次[1,2,1],第二次[1,2,2],第三次次[1,2,2]

避免这个问题,要在第一次foreach循环后加上
foreach ($a as &$val){}
unset($val); //加上这句,取消$val对地址的引用,程序恢复正常。
foreach ($a as $val){}

原创粉丝点击