上一篇博文Zero主要学习认识了PHP变量的概念——在php执行过程中数值可以变化的量以及变量的声明和使用,如果对于这两点知识还不够了解Zero建议您阅读上一篇博文:《从7到8,PHP变量之认识PHP变量》。今天Zero将要学习的是关于PHP变量作用域方面的知识。
1、什么是变量的作用域
变量在使用时,要符合变量的定义规则。变量必须在有效的范围内,如果变量超出有效范围,则变量也就失去意义了。其中所说的有效范围就是指——变量的作用域。
2、三种变量作用域解析
2.1、局部变量——在函数内部定义的变量,其作用域是所在函数。(关于函数的相关内容,我们不久将会学到)
2.2、全局变量——被定义在所有函数以外的变量,其作用域是整个PHP文件,但在用户自定义函数内部是不可用的。如果希望在用户自定义函数内部使用全局变量,则要使用global关键词声明
2.3、静态变量——能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值。而一般变量是在函数调用结束后,其存储数据将被清除,所占内存将被释放。使用静态变量时,先要用关键字static来声明变量,把关键字static放在要定义的变量之前。
3、下面通过三个例子来了解这三种作用域
3.1、下面通过一个实例来区分局部变量和全局变量的差别:
- <?PHP
- echo”局部变量和全局变量的应用”;
- $zero=”在……函数外-全局变量”; //在函数外声明一个变量——全局变量
- function zero(){
- $zero=”…..在函数内…..-局部变量”; //在函数内声明一个变量——局部变量
- echo”在函数内输出的内容是:$zero.<br>”; //在函数内输出这个变量
- }
- zero();
- echo”在函数外输出的内容是:$zero.<br>”; //在函数外输出这个变量
- ?>
复制代码
输出结果:
局部变量和全局变量的应用在函数内输出的内容是:…..在函数内…..-局部变量.
在函数外输出的内容是:在……函数外-全局变量
3.2、下面这个实例是静态变量的应用:
- <?PHP
- function zdy(){
- static $zero=0; //初始化静态变量
- $zero+=1; //静态变量加1,这在变量运算一节中会学到
- echo $zero.”";} //输出静态变量
- function zdy1(){ //自定义函数
- $zero=0; //声明函数内部变量
- $zero+=1; //变量加1
- echo $zero.”";} //输出局部变量
- for($i=0;$i<10;$i++) zdy(); //输出1-10
- echo”<br>”;
- for($i=0;$i<10;$i++) zdy1(); //输出10个1
- echo”<br>”
- ?>
复制代码
输出结果:
12345678910
1111111111
从上例可知:自定义函数zdy()是输出1-10共10个数字,而zdy1()函数则输出的是10个1。因为自定义函数zdy()含有静态变量,而函数zdy1()是一个普通变量。
3.3、如何使用global关键词声明:
- <?PHP
- $abc=”不会看到”; //声明全局变量
- $ab=”会看到”; //什么全局变量
- function zero(){ //声明自定义函数
- echo $abc.”<br>”; //能直接输出全局变量吗?
- global $ab; //用global关键词处理全局变量
- echo $ab.”<br>”;} //处理完后全局变量是否能在自定义函数内引用呢?
- zero();
- ?>
复制代码
输出结果:
会看到
从上例可知:在自定义函数内无法直接引用全局变量的,必须使用global关键字声明变量后,变量才能得到引用。
|