变量作用域指的是在变量声明之后它的有效作用范围。
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。
注意:在使用全局变量时,一定要注意,因为一旦任何一个地方修改了全局变量的值,全局变量的值就发生了变化,这样很容易发生意外。