PHP GC中官网循环引用的例子疑惑

salmonl 2019-08-08 06:34:18
PHP官网间接循环引用的时候,把数组作为一个元素添加到自己, 代码如下:

$a = array( 'one' );
$a[] =& $a;
xdebug_debug_zval( 'a' );


按照官网的说法,unset($a)后输入结果如下:

(refcount=1, is_ref=1)=array (
0 => (refcount=1, is_ref=0)='one',
1 => (refcount=1, is_ref=1)=...
)


而我测试的结果如下:

运行代码

$a = array( 'one' );
$a[] = &$a;

unset($a);
xdebug_debug_zval('a');


分别在php5.4.41和php7.0.1下运行:

[root@freya50 unit_test]# php5 gc.php
a: no such symbol
[root@freya50 unit_test]#
[root@freya50 unit_test]#
[root@freya50 unit_test]# php7 gc.php
a: (refcount=0, is_ref=0)=*uninitialized*


对这个不一致的结果很不理解,搜索发现很多人都是直接引用官网的例子,希望明白人指点一二。

官网相关内容地址: GC



...全文
177 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
salmonl 2019-08-09
  • 打赏
  • 举报
回复
特别感谢明白人,帮忙分析分析哈

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧