函数中的静态内存 [PHP]

static memory in functions [PHP]

我有静态变量的研究函数,让我们看下一个代码:

(警告!要进行测试,您必须在 php.ini 中启用 xdebug)

function a()
{
    static $var = 10;
    xdebug_debug_zval('var');
    return $var;
}
a();

接下来输出:var:(refcount=2, is_ref=1),int 10

这是怎么回事?为什么是 refcount=2?第二个参考在哪里?

P.S 所以如果我们有 var:(refcount=2, is_ref=1),int 10。这就是为什么我们不能在静态变量中保存引用。

对于用户 Mark Ba​​ker

function a()
{
    $var = 10;
    xdebug_debug_zval('var');
    return $var;
}
a();

输出:var:(refcount=1, is_ref=0),int 10

信息:调用函数不使用可变参数输出信息没有问题。因此,鉴于 arguments used by name of the variable written into a string

访问 PHP 中的静态变量会在使用时创建对内部静态数组的引用。

您可以通过注意不可能在静态变量中存储引用来验证这一点:

function a() {
    static $var = 1;
    var_dump($var);
    $var = &$ref;
    $var = 2;
}
a(); a();
// prints int(1) int(1)