一尘不染

PHP在foreach中通过引用传递

php

我有以下代码:

$a = array ('zero','one','two', 'three');

foreach ($a as &$v) {

}

foreach ($a as $v) {
  echo $v.PHP_EOL;
}

有人可以解释为什么输出是:零一二二。

摘自zend认证学习指南。


阅读 317

收藏
2020-05-26

共1个答案

一尘不染

因为在第二个循环中,$v仍然是对最后一个数组项的引用,所以每次都将其覆盖。

您可以看到这样的内容:

$a = array ('zero','one','two', 'three');

foreach ($a as &$v) {

}

foreach ($a as $v) {
  echo $v.'-'.$a[3].PHP_EOL;
}

如您所见,最后一个数组项采用当前循环值:“零”,“一个”,“两个”,然后就是“两个” …:)

2020-05-26