我在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。
答案 0 :(得分:1)
网站是对的;如果不是全部,大多数编程语言的输出将是012而不是000。
这是因为变量在内存中声明了一次,并且在调用该函数时将被重用。这就是静态。我学会了用C ++理解这一点。
答案 1 :(得分: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和的值 增加它。