• 变量作用域


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

    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。

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

  • 相关阅读:
    jsp 特殊标签
    poj 1753 Flip Game 高斯消元 异或方程组 求最值
    zoj 3155 Street Lamp 高斯消元 异或方程组 求方案数
    poj1222 EXTENDED LIGHTS OUT 高斯消元解异或方程组 模板
    zoj 3930 Dice Notation 模拟
    zoj 3157 Weapon 线段树求逆序对数
    hdu 1242 Rescue BFS+优先队列
    hdu 3466 Proud Merchants 贪心+01背包
    zoj 3689 Digging 贪心+01背包
    hdu 2602 Bone Collector 01背包模板
  • 原文地址:https://www.cnblogs.com/tommymarc/p/11627313.html
Copyright © 2020-2023  润新知