$a = [1, 2, 3];
xdebug_debug_zval('a');
$b = $a;
xdebug_debug_zval('a');
unset($b);
xdebug_debug_zval('a');
这将输出
a: (refcount=2, is_ref=0)=array (2 => (refcount=0, is_ref=0)=1, 1 =>(refcount=0, is_ref=0)=2)
a: (refcount=3, is_ref=0)=array (2 => (refcount=0, is_ref=0)=1, 1 => (refcount=0, is_ref=0)=2)
a: (refcount=2, is_ref=0)=array (2 => (refcount=0, is_ref=0)=1, 1 => (refcount=0, is_ref=0)=2)
为什么在第一行中refcount是2
最佳答案
这似乎是由于“PHP 7中的内部值表示”。
在PHP手册上的Reference Counting Basics中遵循此注释。
以及nikic's Blog中的详细信息:“PHP 7中的Zvals”。
请参阅此xdebug commit on github。这也可能是答案的一部分。
希望能帮助到你。
关于php - 为什么数组的初始引用计数在php7.1中为2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48383377/