&符号导致的一个bug

话不多说 上实例代码

$a = [
            ['a' => 1],
            ['b' => 1],
            ['c' => 1],
     ];

foreach ($a as &$i) {
   $i['dd'] = 1;
}

foreach ($a as $i) {
   var_dump($i);
}

我以为结果a b c 的对应值

可是

 经过一步步的排查 打印 

发现是&引起的问题

修改代码

$a = [
            ['a' => 1],
            ['b' => 1],
            ['c' => 1],
     ];

foreach ($a as &$i) {
   $i['dd'] = 1;
}

foreach ($a as $j) {
   var_dump($j);
}

打印结果

 当然也可以不使用&符号

$a = [
            ['a' => 1],
            ['b' => 1],
            ['c' => 1],
     ];

foreach ($a as $k=>$v) {
   $a[$k][dd]=1;  
}

foreach ($a as $v) {
   var_dump($v);
}

 结果一致 

虽然知道是& 符号引起的  但是不知道为什么

原文地址:https://www.cnblogs.com/baozi-tudou/p/14439701.html