$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/

10-10 15:10