所以我们在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之外的其他编程语言的信息.
来自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)
这是许多使用静态变量的语言的常见行为。
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |