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

gwi*_*lie 5 php variables

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

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

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

通过各种方式添加除PHP之外的其他编程语言的信息.

Kas*_*syx 1

来自PHP 文档(示例 #5):

function test()
{
    static $a = 0;
    echo $a."\n\r";
    $a++;
}
Run Code Online (Sandbox Code Playgroud)

现在,$a 仅在第一次调用函数时初始化,每次调用 test() 函数时,它都会打印 $a 的值并递增它。

因此,如果您调用它两次:

test();
test();
Run Code Online (Sandbox Code Playgroud)

返回将是:

0
1
Run Code Online (Sandbox Code Playgroud)

让我们回到你的例子。也有同样的情况,$pattern只会初始化一次。

深入 C/C++

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

int main()
{
    foo();
    foo();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出将是:

0
1
Run Code Online (Sandbox Code Playgroud)

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