深入探讨引入变量&$str解读

  $data = ['a','b','c'];
  foreach($data as $k=>$v){
          $v = &$data[$k];
  }
  程序运行时 每一次循环结束后的变量$data的值是什么?


解读:

1)第一次循环:

$k=0;

$data[0]='a';

$v='a';

$v=&$data[0];$v执行$data[0]存储空间(如图1-1)

此时的$data = ['a','b','c'];

 2)第二次循环:

 $k=1;$data[1]='b';

由于循环体:$v=$data[1];执行$v的一次赋值操作

即:$v='b';此时$data[0]与$v共同指向的空间的存储值被覆盖为‘b’(如图2-1)

执行循环体:$v=&$data[1];

$v指向$data[1]的存储空间;(如图2-2)

此时的$data = ['b','b','c'];


3)第三次循环:

 $k=2;$data[2]='c';

由于循环体:$v=$data[2];执行$v的一次赋值操作

即:$v='c';此时$data[1]与$v共同指向的空间的存储值被覆盖为‘c’(如图3-1)

执行循环体:$v=&$data[2];

$v指向$data[2]的存储空间;(如图3-2)

此时的$data = ['b','b','c'];


猜你喜欢

转载自blog.csdn.net/qq_17040587/article/details/81945205