PHP----------PHP函数里面的static静态变量
很少用到static这个关键词,不管是类里面还是方法里面基本都没怎么用过。平时看到类里面有这个都没什么好奇的,今天在函数里面看到了这个,就去百度了一下。
<?php
function test1(){
static $a = 0;
$a++;
echo 'test1的'.$a.'<br/>';
}
function test2(){
$a = 0;
$a++;
echo 'test2的'.$a.'<br/>';
}
test1();
test1();
test2();
test2();
test1();
以上两个函数写在同一个文件下,先看下面运行结果
大家可以很容易的看出来,test1里面的$a是每调用一次test1就会在上次调用test1的基础上增加1,而且跟test2里面的$a没有任何关系。
那这里就总结一下static在函数里面定义变量的作用,(以上完全自己手敲没有复制外部资料。以下百度所得)
1.不会随着函数的调用和退出而消失,当再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值
2.静态局部变量只会初始化一次
3.静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量);静态变量的初始值为0。
4.当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。