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零基础入门教程。
一起学习!