3 回答
![?](http://img1.sycdn.imooc.com/545863f50001df1702200220-100-100.jpg)
TA贡献1788条经验 获得超4个赞
因为在第二个循环中,$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’.*)
![?](http://img1.sycdn.imooc.com/54585094000184e602200220-100-100.jpg)
TA贡献1853条经验 获得超6个赞
$a = array('zero', 'one', 'two', 'three');
$v = &$a[0]
$a[0]
$v
$v
$a[0]
$v = &$a[1]
$a[1]
$a[0]
$a[0]
foreach ($a as &$v) {}
$a[3]
$v
$a[3]
$v
$a[3]
foreach ($a as $v) { echo $v.'-'.$a[3].PHP_EOL;}
$v
$a[3]
$v
$a[3]
$a[3]
$v
$v
$a[3]
, $a[3]
$v
$a[3]
$a[3]
two
![?](http://img1.sycdn.imooc.com/54586453000163bd02200220-100-100.jpg)
TA贡献1829条经验 获得超7个赞
第一回路
$v = $a[0];
$v = $a[1];
$v = $a[2];
$v = $a[3];
是!电流$v = $a[3]就位。
第二回路
$a[3] = $v = $a[0], echo $v; // same as $a[3] and $a[0] == 'zero'
$a[3] = $v = $a[1], echo $v; // same as $a[3] and $a[1] == 'one'
$a[3] = $v = $a[2], echo $v; // same as $a[3] and $a[2] == 'two'
$a[3] = $v = $a[3], echo $v; // same as $a[3] and $a[3] == 'two'
因为$a[3]按处理前分配。
- 3 回答
- 0 关注
- 316 浏览
添加回答
举报