循环引用问题,求老师解惑
来源:2-2 PHP引用变量考察点(下)
慕侠7264145
2019-02-14
老师,我现在有个疑惑 关于如下两个方法,question 是咋们真题中的循环引用的问题,但是我自己模拟了changeRefence方法 和 循环引用的模式应该是一致的,但是changeRefence方法却没有改变数组arr的数据(还是[‘a’,‘b’],而不是循环引用中的[‘b’,‘b’]),希望老师能提点一下
public function question(){
$data = ['a','b','c'];
foreach ($data as $key => $val )
{
echo "key---".$key." => value ----".$val;
$val = &$data[$key];
xdebug_debug_zval('data');
}
var_dump($data);
}
public function changeRefence()
{
$arr = ['a','b'];
$a = &$arr[0];
xdebug_debug_zval('b');
xdebug_debug_zval('c');
$a = &$arr[1];
xdebug_debug_zval('b');
xdebug_debug_zval('c');
var_dump($arr);
var_dump($a);
}
写回答
2回答
-
30second
2019-07-24
foreach ($data as $key => $val )
修改值是在这一步进行的
00 -
慕侠7264145
提问者
2019-02-14
嗯 我明白了,在我写的changeRefence 方法中是没有进行$a 值的更改的 仅仅是进行了 引用变量的更改,本质上$a只是更改了 $a所指向的空间,并没有对空间的值进行修改
00
相似问题