下面php代码输出结果
<?php
$arr = ['a', 'b', 'c', 'd'];
foreach ($arr as $k => $v) {
$v =& $arr[$k];
}
var_dump($arr);
$v = &$arr[0] 的执行过程是,将 $arr 的内存地址交给 $v
foreach 执行到下标1 时,($arr as $k => $v) 此时 $v 被赋值为 'b',由于 $v 中保存的是地址值,于是顺着地址值,将 $arr[0] 改成 'b'。
当执行到 $v = &arr[1] 时,又是引用传递,将 $arr[1] 的内存地址交给 $v,此时 $v 不再指向 $arr[0]
所以该题的重点是 1. 地址值和值 2. $v 被赋值是 foreach($arr as $k => $v) 时