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?
答案 0 :(得分:3)
静态声明在编译时解析。您正在运行时递增它。因此,在将其声明为5之后,您将对其进行递增。另请参阅http://www.php.net/manual/en/language.variables.scope.php