2

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

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

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

// output 123

我知道即使在函数退出后静态变量也会保存该值,但在上述函数中,我在第一行分配了一个值,但它仍将 +1 与前一个值相加$count

你能解释一下吗?(如果我听起来像个愚蠢的人,我很抱歉……但我想知道这到底是怎么发生的)

4

2 回答 2

4

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

在此链接中,向下滚动以Using static variables更好地理解。

于 2013-05-13T20:13:25.287 回答
3

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

于 2013-05-13T20:12:37.010 回答