您的位置:首页 > 编程语言 > PHP开发

php中 foreach引用(&)的问题

2017-09-26 17:50 686 查看
$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){}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: