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.4k
2 个回答
第一次循环
$k = 0,$v = 'a'
$v被重新赋值为引用,指向数组的第一个元素'a'
第二次循环
$k = 1,$v被赋值为'b',此时$v指向数组的第一个元素,则数组的第一个元素被赋值为'b'
$v重新指向数组的第二个元素
第三次循环
$k = 2,$v被赋值为'c',此时$v指向数组的第二个元素,则数组的第二个元素被赋值为'c'
$v重新指向数组的第三个元素
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题