我在PHP函数中使用静态作用域时得到了这个例子:
function testStatic() {
static $a;
echo "here is a first time: ".$a."<br />";
$a = 23;
static $a = 100;
echo "here is a second time: ".$a."<br />";
}
当我像这样运行这个函数时
teststatic(); echo "<hr />";
teststatic();
输出结果如下:
这里是:100
这是一个:23
但我希望它如下:
这是一个:null
这是一个:100
答案 0 :(得分:1)
很难相信您指出的输出实际上是该代码的输出。但问题很清楚:
static
变量绑定到函数或类,并通过static
关键字声明。你重新宣布$a
;这应该(我猜)提出警告。
由于static
属性是函数或类的定义的一部分,(显然)它的最后一次出现将“附加”到相关的函数/类中。
仅在第一次调用函数$a
时,才会为23
赋值。在第一个echo
语句之后。
这是一个两步过程,首先解析器将读取函数的定义,包括static
属性。之后代码将运行,属性发生变异。