下面一段代码,大家猜测一下会输出什么结果?
<?php $list = array(1,2,3); // step1 foreach($list as $key => &$value) { var_dump($value); } echo "<br/>\n"; // step2 foreach($list as $key => $value) { var_dump($value); }
大家执行后会发现,step2输出的结果不对,原因可以查看http://php.net/manual/zh/control-structures.foreach.php
总结 : 解决方法有如下几种
1:在step1后,unset($value),移除$value的指向
2:在step2中遍历时,同样使用&引用
3:在step2中遍历时,修改$value的变量名称,只要和step1的不一样即可