为什么第二个静态变量赋值不是第一个生效?

时间:2013-07-05 02:38:49

标签: php static static-variables

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?

1 个答案:

答案 0 :(得分:3)

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