如果我运行以下PHP代码,我会得到123.我不明白它背后的逻辑。我的想法是每当我想输出1时调用该函数。所以输出应该是111。
function keep_track() {
STATIC $count = 0;
$count++;
print $count;
}
keep_track();
keep_track();
keep_track();
// output 123
我知道静态变量即使在函数退出后仍保持该值,但在上面的函数中,我在第一行中指定了一个值,但它仍然在前一个值$count
中添加+1。
你能解释一下吗? (我很抱歉,如果我听起来像个傻瓜......但我想知道这是怎么发生的)
答案 0 :(得分:4)
$count
仅在第一次调用函数时初始化,每次调用该方法时,它都会递增$count
。
在此link中,向下滚动到Using static variables
以便更好地理解。
答案 1 :(得分:3)
代码static $count = 0;
在编译时执行一次,这就是为什么每次调用函数时都不会覆盖该值。请参阅注释“静态声明在编译时解析”。在http://www.php.net/manual/en/language.variables.scope.php