3.3PHP变量的作用域
下一篇: 3.4PHP中可变变量和预定义变量
变量作用域其实就是变量的使用范围,变量在使用时,要符合变量的定义规则。变量必须在有效范围内使用,如果变量超出有效范围,则变量也就失去了意义。变量的作用域如下:
局部变量 在函数的内部定义的变量,其作用域是所在函数
全局变量 被定义在所有函数以外的变量,其作用域是整个php文件,但在用户自定义函数内部是不可用的。如果希望在用户自定义函数内部使用全局变量,则要使用global关键字声明。
静态变量 能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值。而一般变量是在函数调用结束后,其存储的数据就被清除,所占的内存空间被释放。使用静态变量时,要先用关键字static来声明,把关键字static放在要定义的变量前。
在函数内部定义的变量,其作用域为所在函数,如果函数外赋值,将被认为是完全不同的另一个变量。在退出声明变量的函数时,该变量及相应的值就会被清除。
实例1:
<?php //声明全局变量 $str = "我在函数外"; function fun(){ //定义局部变量 $str = "我在函数内"; echo $str."<br/>"; } //调用函数 fun(); echo $str; ?> 上面输出结果: 我在函数内 我在函数外
静态变量在很多地方都用到,比如在博客中使用静态变量来记录浏览者的人数,每一次用户访问和离开时,都能够记录目前浏览者的人数。
实例2:
<?php function myfun(){ //初始化静态变量 static $num = 0; //静态变量加1 $num += 1; echo $num." "; } function myfun2(){ $num = 0; $num +=1; echo $num." "; } //调用两次myfun myfun(); myfun(); //输出换行 echo "<br/>"; myfun2(); myfun2(); ?> 上面的运行结果: 1 2 1 1
这里要十分注意的是,静态变量的初始化只是在第一次遇到时被执行,以后不再对其进行初始化操作。每次调用完函数后,静态变量的值仍存在内存中,不会进行清空。
全局变量可以在程序中的任何地方访问,但在用户自定义函数内是不可用的。想要在用户自定义函数内部使用全局变量,要使用global关键字声明。
实例3:
<?php //声明全局变量$a和$b //并为全局变量赋值 $a = 1 ; $b = 2 ; function Sum() { /*要想在Sum函数内使用全局变量 必须用global对变量$a和$b进行 内部声明 */ global $a , $b ; $b = $a + $b ; } Sum (); echo $b ; ?> 上面的输出结果: 3
对于一个函数能够声明的全局变量的最大个数,PHP没有限制。在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义$GLOBALS数组。前面的例子可以写成:
<?php $a = 1 ; $b = 2 ; function Sum() { $GLOBALS [ 'b' ]=$GLOBALS[ 'a' ]+ $GLOBALS[ 'b' ]; } Sum (); echo $b ; ?>
大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。例如:
<?php $a = 1 ; include 'b.inc' ; ?>
这里变量$a将会在包含文件 b.inc 中生效。
PHP变量的作用范围使用时要十分小心,要区别局部变量和全局变量的使用。
下一篇: 3.4PHP中可变变量和预定义变量
2 Comments
不错,感谢博主整理分享,陌小雨也分享了一套php零基础入门教程。
一起学习!