PHP中的静态变量

时间:2013-05-13 20:10:22

标签: php

如果我运行以下PHP代码,我会得到123.我不明白它背后的逻辑。我的想法是每当我想输出1时调用该函数。所以输出应该是111。

function keep_track() {
  STATIC $count = 0;
  $count++;
  print $count;
}

keep_track();
keep_track();
keep_track();

// output 123

我知道静态变量即使在函数退出后仍保持该值,但在上面的函数中,我在第一行中指定了一个值,但它仍然在前一个值$count中添加+1。

你能解释一下吗? (我很抱歉,如果我听起来像个傻瓜......但我想知道这是怎么发生的)

2 个答案:

答案 0 :(得分:4)

$count仅在第一次调用函数时初始化,每次调用该方法时,它都会递增$count

在此link中,向下滚动到Using static variables以便更好地理解。

答案 1 :(得分:3)

代码static $count = 0;在编译时执行一次,这就是为什么每次调用函数时都不会覆盖该值。请参阅注释“静态声明在编译时解析”。在http://www.php.net/manual/en/language.variables.scope.php