采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
同学你好:
是这样的,这两个是两个不同的zval, 地址分别为0x7ffff4414080 和0x7ffff4414090。 第一个的类型的是10,对应的是
#define IS_REFERENCE 10
是引用类型, 这时候对应的是ref指向的zend_reference的结构体。
而第二个zval的类型是0,对应的是
#define IS_UNDEF 0
此时是未定义的,需要看一下代码echo对应的是什么呢?同学能否贴一下?
老师,截图中第二个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 ```
那就对了, 第二个是对zval的类型做了修改,改为了0,此时就是未定义了,ref的值虽然没有修改,但已经没有意义了。
登录后可查看更多问答,登录/注册
高级工程师的核心能力-阅读源码,课程由浅入深掌握PHP7源码
726 6
948 6
881 5
992 5
845 5