2016年3月31日星期四

php foreach reference 导致的问题

今天碰到一个奇怪的问题,在一个php脚本中写了一个foreache循环,遍历一个数组,同时修改数组里面的元素。大致就是这样:
foreach ($a as $key => &$value) {
   $value['ttt'] = '123';
}
forearch ($a as $key => $value) {

}
结果第二次循环的时候,数组最后一行数据居然没有了。
第一次循环完dump出来的数组又是对的,但是其中一行有点奇怪,大概是这样:
 &array(1) {
    [0]=>
    &array(20) {
      ["sampleID"]=>'aaa'
    }
 }
和这个有没有关系呢?搜了一圈,找到原因了。
这篇解释得很清楚:
php foreach reference
解决方法就是在使用引用完后要unset一下。php manual也有说明
php:foreach

没有评论:

发表评论