6
function track_times() {
static $i = 0;
$i++;
static $i = 5;
return $i;
}

echo track_times() . "\n";
echo track_times() . "\n";

结果是:

6
7

我知道人们不会static以这种方式使用变量,只是无法解释结果。结果意味着第二次赋值生效,但$i在赋值之前自增,那么为什么第一次调用函数返回6?

4

1 回答 1

3

静态声明在编译时解析。您在运行时递增它。因此,在它已经被声明为 5 之后,您正在增加它。另请参见http://www.php.net/manual/en/language.variables.scope.php

于 2013-07-05T02:48:25.670 回答