foreach遍历 &引用

执行

$data = ['a','b','c'];
foreach ($data as $k => $v) {
    $v = &$data[$k];
}

得到每一次的$data是

Array ( [0] => a [1] => b [2] => c ) 
Array ( [0] => b [1] => b [2] => c ) 
Array ( [0] => b [1] => c [2] => c ) 

这是为什么?

阅读 2.5k
2 个回答
第一次循环
$k = 0,$v = 'a'
$v被重新赋值为引用,指向数组的第一个元素'a'
第二次循环
$k = 1,$v被赋值为'b',此时$v指向数组的第一个元素,则数组的第一个元素被赋值为'b'
$v重新指向数组的第二个元素
第三次循环
$k = 2,$v被赋值为'c',此时$v指向数组的第二个元素,则数组的第二个元素被赋值为'c'
$v重新指向数组的第三个元素
推荐问题