我有这个密码:
$a = array ('zero','one','two', 'three');
foreach ($a as &$v) {
}
foreach ($a as $v) {
echo $v.PHP_EOL;
}
有人能解释为什么输出是:
来自zend认证学习指南.
我有这个密码:
$a = array ('zero','one','two', 'three');
foreach ($a as &$v) {
}
foreach ($a as $v) {
echo $v.PHP_EOL;
}
有人能解释为什么输出是:
来自zend认证学习指南.
因为在第二个循环中,$v
仍然是最后一个数组项的引用,所以每次都会被覆盖.
你可以这样看:
$a = array ('zero','one','two', 'three');
foreach ($a as &$v) {
}
foreach ($a as $v) {
echo $v.'-'.$a[3].PHP_EOL;
}
如您所见,最后一个数组项接受当前循环值:"0"、"1"、"2",然后它就是"2"…:)