循环引用问题,求老师解惑

来源: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 )

修改值是在这一步进行的

0
0

慕侠7264145

提问者

2019-02-14

嗯 我明白了,在我写的changeRefence 方法中是没有进行$a 值的更改的 仅仅是进行了 引用变量的更改,本质上$a只是更改了 $a所指向的空间,并没有对空间的值进行修改

0
0

360大牛带你横扫PHP职场 全面解读PHP面试

全面、系统剖析PHP面试,拿下心仪Offer

1817 学习 · 464 问题

查看课程