关于&符号
$data = [1, 2, 3];
foreach ($data as &$value) {
$value = $value * 2;
}
dump($data);
dump('---------------------');
foreach ($data as $value) {
dump($value);
}

为什么第二个foreach 会输出244 ,而不是246.
关于 LearnKu
看完这两个帖子就明白了
https://blog.csdn.net/qq_35146993/article/...
https://blog.csdn.net/qq_34193883/article/...
原因就如1楼所解释,解决方法是引用使用完要unset掉:
原因就如 1 楼所解释,下面是我按自己的理解组织的语言说明:
第一次
foreach结束之后 $value 的地址指向了 $data 的最后一个元素的地址,也就是 $data[2] ,所以第二次执行foreach时相当于在给 $data[2] 重新赋值。php版本呢 ?
$data = [1, 2, 3];
foreach ($data as &$value) {
$value = $value * 2;
}
unset($value);
dump($data);
dump('---------------------');
foreach ($data as $value) {
dump($value);
}
需要unset一下;
如果不unset,&是引用,和指针类似,php底层
第三次循环你的指针没有释放,还指向2,所以还是244;unset就是246了