PHP第十二课3:PHP变量范围
变量的范围就是它的生效范围,大部分的PHP变量只有一个单独的使用范围,也包含了include和require引入文件,当一个变量执行赋值动作后,会随着声明区域位置的差异,而有不同的使用范围。大致上来说变量会依据声明的位置分为局部变量和全局变量两种。
函数中变量 分为:局部变量(内部变量)、全局变量(外部变量)
//测试局部变量 function demo($one){ $two = 100; return $one+$two; } //调用函数 echo demo(200);
全局变量
全局变量也称为外部变量,实在函数的外部被定义的,它的作用域为从变量定义出开始,到本程序文件的末尾。在PHP中由于函数可以视为单独的程序片段,所以局部变量会覆盖全局变量的能见度,因此在函数中并无法直接调用全局变量。
下面案例用来说明全局变量的作用域,在函数中并不能直接调用全局变量,实例代码如下:
<?php $one = 200; //在函数外部声明一个全局变量子$one值为200 $two = 100; //在函数外部声明一个全局变量子$two值为100 function demo() { return $one+$two; //相当于在函数内部新声明并且没赋值的两个变量 } $sum= demo(); //调用demo函数 echo “在函数外部使用函数中运算结果:$sum<br>”; ?>
如果要在函数内部使用函数外部的变量,那么在函数内部就要使用global关键字将要使用的变量全局。
<?php //测试php的全局变量(外部变量) $one = 100; $two = 200; function demo(){ //global 全局,告诉这个函数,我后面紧跟着的两个变量 是外面,我此刻 //要在这个函数里是使用。 global $one,$two; return $one+$two; } //调用函数 echo demo(); $one = 200; //在函数外部声明一个全局变量子$one值为200 $two = 100; //在函数外部声明一个全局变量子$two值为100 function demo() { global $one,$two; return $one+$two; //相当于在函数内部新声明并且没赋值的两个变量 } $sum= demo(); //调用demo函数 echo “在函数外部使用函数中运算结果:$sum<br>”;
PHP变量范围
局部变量从储存方式上可分为动态存储和静态存储,函数中的局部变量,如不专门声明为static存储类别,默认都是动态的分配到存储空间的。而动态变量在函数执行完毕后将自动释放。如果希望在函数执行后,其内部变量依然保存在内存中,应使用静态变量,在函数执行完毕后,静态变量并不会消失,在所有对该函数的调用之间共享,即在函数再次执行时,静态变量将接续前次的结果继续运算,并且尽在脚本的执行期间函数第一次被调用时被初始化。
<?php //php中的静态变量 function demo(){ // static 将变量保存到 内存中,不被释放。 // 不被释放(变量,它里面的值一直保存着,不丢失!!) static $a = 0; echo $a; $a++; } //调用函数 //第一次调用 demo(); //第二次调用 demo(); //第三次调用 demo(); ?> /* 声明一个名为test的函数,测试在函数内部声明的静态变量的使用 */ function test() //声明一个名为test的函数 { static $a=0; /定义一个静态变量$a,并赋值为0 echo $a; //输出变量的$a的值 $a++; //将变量$a自增1 } test(); //第一次运行,输出0 test(); //第一次运行,输出1 test(); //第一次运行,输出2
