深入探讨引入变量&$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'];