php foreach循环体内 value取地址 &$value

<?php
$a = ['a', 'b', 'c'];
foreach ($a as $key => $value) {
    $a[$key] = &$value;
}
var_dump($a);
/*
输出为什么是这个, 每次循环$value难道是同一个?
array(3) {
  [0]=>
  &string(1) "c"
  [1]=>
  &string(1) "c"
  [2]=>
  &string(1) "c"
}
 */
阅读 2.9k
3 个回答

数组的第一个元素、第二个元素、第三个元素都引用了foreach的临时变量$value,第一次循环$value为'a',第二次循环为'b',第三次循环为'c',所以数组的三个元素都为'c'

显然,每次的$value是同一块内存。

我不知道你这个操作意义何在,把数组元素的引用又赋给元素自己?

但每次循环的$value肯定是同一个变量,不会每次都分配新的内存空间。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题