静态变量在使用过程中最注要的就是要清除了,如果我们不清除可能会碰到一些问题了,今天我们来看一篇关于PHP的静态变量的注意细节与例子,具体的如下所示。
只要在变量前加上关键字static,该变量就成为静态变量了。
function test()
{
static $nm = ;
$nm = $nm * ;
print $nm."
";
}
// 第一次执行,$nm =
test();
// 第一次执行,$nm =
test();
// 第一次执行,$nm =
test();
?>
程序运行结果:
1
2
2
4
3
8
函数test()执行后,变量$nm的值都保存了下来了。
在class中经常使用到静态属性,比如静态成员、静态方法。
之前的公司的小兄弟要去面试PHP,他遇到了一道PHP基础面试题,大致内容是如下:
function test(){
static $a = 0;
$a++;
echo "before unset ".$a."
";
unset($a);
$a = 23;
echo "after unset ".$a."
";
}
test();
test();
test();
看到这题的时候,就注意到了stats这个标记了$a。就知道这题不会是第一反应的结果。(结果如下)
PHP运行结果
其实这样这么理解:
PHP变量关系图
PHP的内存地址跟变量直接就是通过这种方式进行关联的。一般的变量是是通过关联的方式指向对应的地址,而不是真是的值。所以unset()的过程,其实是断了之间的联系,而不是抹掉了内存地址的值。
而static在初始化变量的,仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。