变量作用域指的是在变量声明之后它的有效作用范围。

1.函数变量

函数变量值得是在创建函数时,放在函数名后面括号内声明的变量。函数变量只在函数内部有效,退出函数之后就无法访问这些变量。

代码示例:

<?php
header('Content-Type:text/html;charset=utf-8');
$filepath="E:/works/app.doc";
function opendocument($filepah){
	echo "正在打开文件".$filepah.'<br/>';
}
opendocument("D:/works/app.xls");
echo $filepath;
/*
*输出为:
*正在打开文件D:/works/app.xls
*E:/works/app.doc
*/

函数参数也可以称为局部变量,因为这些参数只在函数内部起作用,在函数外部不能访问。

2.局部变量

局部变量的作用域与它声明的位置有关,并且只在质地昂的范围内有效。

代码示例:

$money=200;
function UpdateAccountMoney(){
	$money=500;
	$money+=500;
	echo "更新后的余额为:".$money;
	echo '<br/>';
}
UpdateAccountMoney();
echo "当前余额为:".$money;
/*
*输出为:更新后的余额为:1000
*当前余额为:200
*/

程序输出了两个不同的值,这是因为在UpdateAccountMoney()函数中的$money变量为局部变量,修改局部变量的值不会影像函数外部的任何值。$money变量的值在函数执行结果是被抛弃,所以主程序内$money变量的值仍是200。

3.静态变量

静态变量的作用域比余部变量大,他在声明时需要使用staic关键字。静态变量竟可以用在函数内,他的值在函数退出时不会丢失,并且再次调用此函数时,还能保留值。

代码示例:

$number=500;
function UpdateOnlineNumbers(){
	static $number=0;
	echo "当前在线人数为:".$number;
	$number+=10;
}
echo "第一次调用";
UpdateOnlineNumbers();
echo '<br/>';
echo "第二次调用";
UpdateOnlineNumbers();
echo '<br/>';
echo "主程序内\$number变量的值为:".$number;

输出结果为:

第一次调用当前在线人数为:0
第二次调用当前在线人数为:10
主程序内$number变量的值为:500

由于在UpdateOnlineNumbers()函数中指定$number为静态变量,因此,每次调用时都在原来的值的基础上进行递增。而在函数外声明的$number变量不会发生变化。

4.全局变量

全局变量的作用域最大,可以在整个PHP程序中的任何地方访问。声明全局变量的关键字为global,同样需要在函数内使用。

代码示例:

function UpdateMoney(){
	global $money1,$money2,$newmoney;
	$newmoney=$money1-$money2;
}
$money1=500;
$money2=200;
$newmoney=0;
UpdateMoney();
echo "现在的余额为:".$newmoney;

输出结果:

现在的余额为:300

如果不在$newmoney前加global,改变量会认为局部变量,此时页面上显示的值为0。添加global后,UpdateMoney()函数对变量的修改将在全局内有效,所以输出为300。

注意:在使用全局变量时,一定要注意,因为一旦任何一个地方修改了全局变量的值,全局变量的值就发生了变化,这样很容易发生意外。

02-14 03:28