调用函数时是否忽略php静态变量重置?

时间:2013-08-10 17:29:01

标签: php static-variables

我在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。

2 个答案:

答案 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和的值   增加它。