PHP变量作用域(局部变量、全局变量和静态变量)
在使用 PHP 进行网站开发的时候,程序设计人员可以在大部分位置声明变量,但是变量声明位置及声明方式的不同决定了变量作用域的不同。变量作用域明确了变量在哪些范围内能被使用,在哪些范围内不能被使用。
按照作用域的不同,PHP 中的变量可以被分为局部变量、全局变量和静态变量。
局部变量的应用示例代码如下:
要将一个变量声明为全局变量,只需要在该变量前面加上关键字“global”或“GLOBAL”,不区分大小写。使用全局变量,能够实现在函数内部引用函数外部的变量,或者在函数外部引用函数内部的变量。
【实例 1】全局变量,在函数内部引用函数外部的变量。
【实例 2】全局变量,在函数外部引用函数内部的变量
静态变量是指用“static”关键字声明的变量,这种变量与局部变量之间的区别在于静态变量离开作用范围后,它的值不会自动消失,而是继续存在,当下次再用到它的时候,可以使用最近一次的值。
应用静态变量的示例代码如下:
如果变量 a 为局部变量,那么这段代码中 3 次调用的输出应该都是 10。但是,变量 a 在声明的时候被加上了 static 关键字,这标志着变量 a 在 add() 函数内部为一个静态变量,具备记忆自身值的功能,当第 1 次调用 add() 函数时,变量 a 由于自加变为 1,这时变量 a 将记住自己不再是 0 而是 1,当再次调用 add() 函数时,变量 a 再一次自加,由 1 变成了 2...,我们由此可以看出静态变量的特性。
按照作用域的不同,PHP 中的变量可以被分为局部变量、全局变量和静态变量。
PHP局部变量
局部变量是在某一函数体内声明的变量,该变量的使用仅限于其所在的函数体的内部。如果在该函数体的外部引用这个变量,则系统将会认为引用的是另外一个变量。局部变量的应用示例代码如下:
<?php function local(){ $a = 10; // 在函数体内部声明一个变量a并赋值 echo "函数内部变量a的值为".$a."<br>"; } local(); //调用local()函数,用于打印变量a的值 $a = 20; //在函数外部再次声明变量a并赋另一个值 echo "函数外部变量a的值为".$a; ?>运行结果为:
函数内部变量a的值为10
函数外部变量a的值为20
PHP全局变量
全局变量可以在程序的任意地方被引用,这种变量的作用范围是最广泛的。要将一个变量声明为全局变量,只需要在该变量前面加上关键字“global”或“GLOBAL”,不区分大小写。使用全局变量,能够实现在函数内部引用函数外部的变量,或者在函数外部引用函数内部的变量。
【实例 1】全局变量,在函数内部引用函数外部的变量。
<?php $a = 10; //在函数外部定义一个变量a function local(){ global $a; //将变量a声明为全局变量 echo "在local()函数内部获得变量a的值为".$a."<br>"; } local(); //调用local()函数,用于输出local()函数外部变量a的值 ?>在浏览器中的执行结果为:
在local()函数内部获得变量a的值为10
【实例 2】全局变量,在函数外部引用函数内部的变量
<?php $a = 10; //在函数外部定义一个变量a function local(){ global $a; // 将变量a声明为全局变量 $a=20; // 修改变量的值 echo "在local函数内部获得变量a的值为".$a."<br>"; } local(); // 调用local()函数,用于输出local()函数内部变量a的值 echo"函数外部输出变量a的值为",$a; // 输出local()函数外部变量a的值 ?>运行结果为:
在local函数内部获得变量a的值为20
函数外部输出变量a的值为20
PHP静态变量
函数执行时所产生的临时变量,在函数执行结束时就会自动消失。当然,因为程序需要,如果不希望循环过程中每次函数执行结束时变量消失,那么应采用静态变量。静态变量是指用“static”关键字声明的变量,这种变量与局部变量之间的区别在于静态变量离开作用范围后,它的值不会自动消失,而是继续存在,当下次再用到它的时候,可以使用最近一次的值。
应用静态变量的示例代码如下:
<?php function add() { static $a = 10; $a++; echo $a."<br >"; } add (); add (); ?>运行结果为:
11
12
13
如果变量 a 为局部变量,那么这段代码中 3 次调用的输出应该都是 10。但是,变量 a 在声明的时候被加上了 static 关键字,这标志着变量 a 在 add() 函数内部为一个静态变量,具备记忆自身值的功能,当第 1 次调用 add() 函数时,变量 a 由于自加变为 1,这时变量 a 将记住自己不再是 0 而是 1,当再次调用 add() 函数时,变量 a 再一次自加,由 1 变成了 2...,我们由此可以看出静态变量的特性。