ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# PHP变量的生命周期 * * * * * 变量不仅有其特定的作用范围,还有其存活的周期--生命周期。变量的生命周期指的是变量可被使用的一个时间段,在这个时间段内变量是有效的,一旦超出这个时间段变量就会失效,我们就不能够再访问到该变量的值了。 PHP对变量的生命周期有如下规定。 1. 局部变量的生命周期为其所在函数被调用的整个过程。当局部变量所在的函数结束时,局部变量的生命周期也随之结束。 2. 全局变量的生命周期为其所在的".php"脚本文件被调用的整个过程。当全局变量所在的脚本文件结束调用时,则全局变量的生命周期结束。 有的时候某个自定义函数结束后,我们希望该函数内的变量仍然存在,这时就需要将这个变量声明为静态变量。将一个变量声明为静态变量的方法为,在变量前面加"static"关键字。 ~~~ function test() { static $a = 0; //定义一个静态变量a并赋初始值为0 echo $a . "<br>"; //输出变量a的值 $a = $a + 1; //将变量a的值加1再次赋给变量a } test(); //输出 0 test(); //输出 1 test(); //输出 2 echo $a; //$a,不在作用域下,不输出 ~~~ 从上面得到的结果可以看出,每次调用函数test()的时候,变量a的值都会增加1。也就是说,每次调用函数结束以后,变量a都仍然存在。再次调用函数test()时,变量a将会使用上一次调用该函数后得到的值。同时从上面的例子我们也可以得出这样的结论,**静态变量的作用范围与局部变量相同,但是生命周期与全局变量相同。** 我们可以这样理解静态变量。 只有函数首次被调用时,才取函数体内静态变量的初始值。以后再次调用该函数时,静态变量将取上次调用这个函数后得到的值。 在为静态变量赋初值的时候,不可以将一个表达式赋给该静态变量。 所有的全局变量都是静态变量,而局部变量只有定义时加上类型修饰符static,才为局部静态变量。 资料来源: http://www.cnblogs.com/mysic/p/4706210.html