php下foreach引用的坑

下面一段代码,大家猜测一下会输出什么结果?

<?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的不一样即可

此条目发表在 网站开发 分类目录,贴了 标签。将固定链接加入收藏夹。

发表评论