静态变量是一个特殊的局部变量,通过前面的学习我们知道,在函数内部定义一个局部变量,函数调用结束之后这个变量就会被销毁,不能继续使用了。而静态变量不同,静态变量在初始化之后,会在程序运行期间会一直存在。
和局部变量相比,静态变量具有一下特点:
- 当函数执行完毕后,静态变量不会消失;
- 静态变量只能在函数内部使用;
- 静态变量只会被初始化一次;
- 静态变量初始化的值可以省略,默认值为 null;
- 静态变量的初始值只能是具体的字符串、数值等,而不能是一个表达式。
也就是说,静态变量的初始化只进行一次,而且是在定义变量时初始化,如果多个定义取最后一次定义的值
<?php
static $a=1;
echo $a;
static $a=2;
echo $a;
static $a=3;
echo $a;
?>
在上面的例子中,静态变量$a的初始值为最后一次定义静态变量时的值,相当于如下代码段:
<?php
static $a=1;
static $a=2;
static $a=3;
echo $a;
echo $a;
echo $a;
?>
输出内容为12345678910
<?php
function test(){
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
test();
}
$count--;
}
?>