请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么最后$a 和$b 指向的的同一个reference, 但是两个类型和值都不一样呢

正在回答 回答被采纳积分+3

1回答

陈雷 2019-02-20 19:42:59

同学你好:

是这样的,这两个是两个不同的zval, 地址分别为0x7ffff4414080 和0x7ffff4414090。    第一个的类型的是10,对应的是

#define IS_REFERENCE                10

是引用类型, 这时候对应的是ref指向的zend_reference的结构体。

而第二个zval的类型是0,对应的是

#define IS_UNDEF                    0

此时是未定义的,需要看一下代码echo对应的是什么呢?同学能否贴一下?

0 回复 有任何疑惑可以回复我~
  • 提问者 llo蛋蛋oll #1
    老师,截图中第二个echo出来对应的是unset()之后$b的值, 这是代码
    ```
    <?php
    $a = 'string';
    echo $a;
    //获取字符串的值: p *z.value.str.val@6 p *z.value.str.val
    
    $b = & $a;
    echo $a; 
    echo $b;
    
    $b = "hello";
    echo $a;
    echo $b;
    
    unset($b);
    echo $a; 
    echo $b;  //null  type=0
    ```
    回复 有任何疑惑可以回复我~ 2019-02-21 09:13:32
  • 陈雷 回复 提问者 llo蛋蛋oll #2
    那就对了,   第二个是对zval的类型做了修改,改为了0,此时就是未定义了,ref的值虽然没有修改,但已经没有意义了。
    回复 有任何疑惑可以回复我~ 2019-02-21 11:33:17
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信