为什么引用计数是3而不是2?

时间:2018-07-02 07:01:02

标签: php php-7 php-5.6 php-5.5 php-5.4

function A($a) {
    xdebug_debug_zval('a');
}
$a = 1; # refcount->1
A($a); # refcount->2

评论是我认为refcount应该是的。

但输出是:

  

a:(refcount = 3,is_ref = 0)= 1

1个额外引用计数从哪里来?

1 个答案:

答案 0 :(得分:1)

在PHP文档中进行了描述,您必须通过引用传递参数。但是在PHP 5.x中已删除了按引用传递参数。这个问题导致我们无法使用debug_zval_dump。使用此功能无法获得正确的引用计数。

我猜不建议您使用此功能来计数引用。在我的测试环境(Apache / PHP7.1)中,您的示例生成的引用计数为1。似乎有些棘手。