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