【发布时间】:2011-11-17 16:14:55
【问题描述】:
我今天的考试中有一个问题,我必须确定输出。
<?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);
?>
输出是
2
5
9
14
last num is 20
我不知道为什么这是输出。我知道这是由于静态成员,但每次进入函数时,成员 $count 都会重新初始化。我在 Static Keyword 看到了文档。
但是关于静态变量的重新初始化没有写吗?我们可以在 PHP 中重新初始化静态变量吗?具有相同或任何其他值?
【问题讨论】:
-
我不知道为什么这是输出。我知道这是由于静态成员 ...我很困惑,那你想知道什么?类中的
static关键字有所不同。看看variable scope。 -
我不关注。你能详细说明“重新初始化php中的静态变量”是什么意思吗?
-
我的意思是这个输出是由于静态成员。如果我们从中删除静态词,输出将完全不同
-
@Tadeck 我们一次又一次地调用该函数 statfunc()。每当我们调用该函数时,静态成员是否会重新初始化?
-
不,如果它们被初始化一次,它们就不会再次被初始化——这就是函数中静态变量的工作方式。它们存储分配给它们的值,即使分配发生在同一函数的不同调用中。