首页 > 开发 > PHP > 正文

分析PHP中static关键字的原理

2024-05-04 22:02:56
字体:
来源:转载
供稿:网友

在PHP中,除了使用常规类和方法、访问控制之外,还有静态关键字,静态变量可以是局部变量或全局变量,那么分析PHP中static关键字的原理大家有了解过吗?下面就让错新技术频道小编根据问题逐步分析一下吧!

看PHP手册的时候发现了下面这样一段代码:

复制代码 代码如下:

function Test()
{
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
Test();
}
$count--;
}
?>


执行结果如下:
这是一个递归的函数,声明的静态变量count记录次数,输出1~10。
我在看的时候有个疑惑,递归调用的时候 static $count = 0; 语句会重复执行,这为什么不会导致count变量被重复赋值呢?带着这个疑问和同事研究了一下,测试用代码如下:

复制代码 代码如下:


echo 'start
';
static $a = 10;
echo "$a
";
unset($GLOBALS['a']);
echo "$a
";
static $a = 20;
echo "$a
";
$GLOBALS['a'] = 10;
echo "$a
";
static $a = 30;
echo "$a
";
unset($GLOBALS['a']);
echo "$a
";
static $a;
echo "$a
";
static $a = 40;
echo "$a
";
$a = 100;
echo "$a
";
static $a = 50;
echo "$a
";
static $a = 4;
echo "$a
";
echo 'end
';
exit;
?>

执行结果如下:
start
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表