PHP &符号引起的一个问题

有如下代码:

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,
)