话不多说 上实例代码
$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); }
结果一致
虽然知道是& 符号引起的 但是不知道为什么