在PHP中重新初始化静态成员

Sha*_*120 3 php static

我今天的考试中有一个问题,我必须确定输出.

<?php
function statfun($x)
{
    static $count=0;

    $count += $x;

    if ($count < 20) {
        echo "$count <br>";
        statfun(++$x);
    } else {
        echo "last num is $count";
    }
}

statfun(2);
?>
Run Code Online (Sandbox Code Playgroud)

输出是

2
5
9
14
last num is 20
Run Code Online (Sandbox Code Playgroud)

我不知道为什么这是输出.我知道这是由静态成员引起的,但每次进入函数时,成员都会$count被重新初始化.我在静态关键字中看到了文档.

但是没有关于静态变量重新初始化的文章?我们可以在PHP中重新初始化静态变量吗?具有相同或任何其他值?

Lin*_*een 5

每次进入函数时,成员$ count都会重新初始化

这是不正确的.静态变量只初始化一次,这是静态声明的变量与"普通"变量的区别.所以基本上,你要分配一个初始值$count.在多次调用中statfun(),此静态变量的值将被保留并可以重用.

手册 "使用静态变量"部分:

静态变量仅存在于本地函数作用域中,但在程序执行离开此作用域时它不会丢失其值.

另请参阅手册中的示例代码.那里说的差异应该回答你的问题.