猿问

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 ) 

这是为什么?

茅侃侃
浏览 452回答 2
2回答

Helenr

第一次循环 $k = 0,$v = 'a' $v被重新赋值为引用,指向数组的第一个元素'a' 第二次循环 $k = 1,$v被赋值为'b',此时$v指向数组的第一个元素,则数组的第一个元素被赋值为'b' $v重新指向数组的第二个元素 第三次循环 $k = 2,$v被赋值为'c',此时$v指向数组的第二个元素,则数组的第二个元素被赋值为'c' $v重新指向数组的第三个元素
随时随地看视频慕课网APP
我要回答