我有以下代码:
$a = array ('zero','one','two', 'three'); foreach ($a as &$v) { } foreach ($a as $v) { echo $v.PHP_EOL; }
有人可以解释为什么输出是:零一二二。
摘自zend认证学习指南。
因为在第二个循环中,$v仍然是对最后一个数组项的引用,所以每次都将其覆盖。
$v
您可以看到这样的内容:
$a = array ('zero','one','two', 'three'); foreach ($a as &$v) { } foreach ($a as $v) { echo $v.'-'.$a[3].PHP_EOL; }
如您所见,最后一个数组项采用当前循环值:“零”,“一个”,“两个”,然后就是“两个” …:)