3

我在http://w3schools.com/php/php_variables.asp得到了这段代码

代码是

<?php
function myTest()
{
static $x=0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>

该网站声称输出将是 012

不,我的问题是每当函数 myTest() 运行时,$x 应该设置为 0,因此输出应该是 000。有人可以告诉我为什么会一次又一次地运行函数 myTest() 增加值,即使 $x是一次又一次地重置为 0 的值。

请帮助我,因为我是新手。我试着问了几个懂编程的人,他们同意我的看法,输出应该是 000。

4

2 回答 2

1

网站是对的;如果不是全部,大多数编程语言的输出将是 012 而不是 000。

这是因为变量在内存中声明了一次,并且在您调用该函数时将被重用。这就是静态。我学会了用 C++ 理解这一点。

于 2013-08-10T17:33:20.270 回答
1

输出是对的,应该是012:http ://codepad.org/NVbfDGY7

请参阅官方文档中的此示例:http ://www.php.net/manual/en/language.variables.scope.php#example-103

<?php
function test()
{
    static $a = 0;
    echo $a;
    $a++;
}
?>

test();  // set $a to 0, print it (0), and increment it, now $a == 1
test();  // print $a (1), and increment it, now $a == 2
test();  // print $a (2), and increment it, now $a == 3

医生说:

现在,$a 仅在第一次调用函数时初始化,每次调用 test() 函数时,它都会打印 $a 的值并递增它。

于 2013-08-10T17:33:28.817 回答