函数调用静态中的未命名变量

时间:2014-01-29 09:24:14

标签: php variables

所以我们在PHP中调用一些函数:

do_something('foodabaa');
function do_something($subject)
{
  static $pattern = '~foo~';
  return preg_replace($pattern, 'bar', $subject);
}

替换值bar是静态的,还是动态的,因此每次调用函数都会重新初始化它?

除了PHP之外,请务必添加有关其他编程语言的信息。

1 个答案:

答案 0 :(得分:1)

来自PHP documentation(示例#5):

function test()
{
    static $a = 0;
    echo $a."\n\r";
    $a++;
}
  

现在,只有在第一次调用函数时才会初始化$ a   调用test()函数它将打印$ a和的值   增加它。

所以如果你打两次电话:

test();
test();

返回将是:

0
1

回到你的例子。同样的情况,$pattern只会被初始化一次。

内部C / C ++

void foo()
{
    static int a = 0;
    printf("%d", a);
    x++;
}

int main()
{
    foo();
    foo();
    return 0;
}

输出将是:

0
1

这是许多使用静态变量的语言中的常见行为。