我在W3Schools上看到了这一点。
<?php
function myTest() {
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
输出为0,1和2。 我想知道它为什么不是0,0和0。 因为每次调用函数时,变量x再次变为0。
我是一名PHP初学者。谢谢!
答案 0 :(得分:2)
如果在函数内部声明了var static,则var会将其保留在多个调用中。您可以将它与类中的静态var进行比较。
您发布的代码是查看实际效果的一个很好的示例。但是我只会小心使用静态内部函数,因为大多数情况下,你需要其他地方的静态值,重置值,或其他需要很多逻辑并使代码真的很糟糕的东西。
一个很好的例子是一个函数,它返回给定标识符的唯一标识符。这可以通过使用此代码来实现。
function unique_id($id) {
static $count = 0;
return $id . ($id++);
}
答案 1 :(得分:0)
这个例子可能会澄清。 静态具有范围,因此不是全局变量。所以我可以在函数外定义静态$ x,它将在那里定义。由于static具有范围,因此继续执行和重置$ x = 0是没有任何意义的。因此,php将仅在第一次调用该行时才会确认它。
<?php
static $x = 1000;
function myTest() {
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>