首页 > 编程笔记 > PHP笔记 阅读:4

PHP变量作用域(局部变量、全局变量和静态变量)

在使用 PHP 进行网站开发的时候,程序设计人员可以在大部分位置声明变量,但是变量声明位置及声明方式的不同决定了变量作用域的不同。变量作用域明确了变量在哪些范围内能被使用,在哪些范围内不能被使用。

按照作用域的不同,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

这段程序中定义了一个 add() 函数,然后分 3 次调用 add() 函数。

如果变量 a 为局部变量,那么这段代码中 3 次调用的输出应该都是 10。但是,变量 a 在声明的时候被加上了 static 关键字,这标志着变量 a 在 add() 函数内部为一个静态变量,具备记忆自身值的功能,当第 1 次调用 add() 函数时,变量 a 由于自加变为 1,这时变量 a 将记住自己不再是 0 而是 1,当再次调用 add() 函数时,变量 a 再一次自加,由 1 变成了 2...,我们由此可以看出静态变量的特性。

相关文章