PHP函数里面的静态变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP函数里面的静态变量相关的知识,希望对你有一定的参考价值。

  工作一年了,一年里很少用到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.当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。

 

以上是关于PHP函数里面的静态变量的主要内容,如果未能解决你的问题,请参考以下文章

php静态变量小结

php单例模式实现数据库类

Jmeter中的函数和BeanShell

php自定义函数之静态变量

PHP中静态变量和函数引用返回

PHP面向对象设计模式和设计原则