有如下代码:
foreach($items as &$item){}
foreach($items as $item) {}
运行之后导致最后两个元素是一样的,倒数第二个元素把倒数第一个元素覆盖了
原因就是第一个循环之后$item这引用变量还存在,第二个循环$item变量会覆盖第一个循环的引用变量$item,结果就导致$items变了
但是这里有点说不通,为什么倒数第二个覆盖了倒数第一个,而不是倒数第一个覆盖倒数第一个(结果就是没有覆盖)?
例如下面的代码:
$items = [1,2,3,4,5];
foreach($items as &$item){}
foreach($items as $item){}
var_export($items);
最后打印出来的结果是:
array (
0 => 1,
1 => 2,
2 => 3,
3 => 4,
4 => 4,
)