$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