• php学习笔记4--php中的变量作用域



    变量作用域:可以简单地理解为变量的可见区域,变量能被访问的范围。
    如同其他语言,php中也有全局作用域和局部作用域之分,但是不同的是:
    php中的全局作用域指的是:只能在函数外部使用,而局部作用域指的是:
    只能在函数内部使用。
    php中的全局变量指的是:在函数外部定义,一般来说只能在函数外部被访问,
    不能直接在函数内部可见的变量;
    而局部变量指的是:在函数内部定义,只能在函数内部访问的变量。
    $name = "csc";
    function test(){
    echo $name; //运行该脚本则会提示:Undefined variable: name未定义的变量name.
    }
    test();
    由上可知,在函数内部不能直接访问函数外部定义的变量。当然也只是不能直接访问,肯定有间接访问的办法:
    php提供了一个global关键字,在函数内部用global声明函数外部的全局变量之后,便可在函数内部访问全局变量了:
    $name = "csc";
    function test(){
    global $name;//在函数中用global声明了全局变量$name之后,对该变量的所有引用都会指向其全局版本。
    echo $name; //正常输出$name的值'csc'
    }
    test();
    若是出现同名的全局变量与局部变量呢?
    $name = "csc";
    function test($name){
    echo $name,'<br/>'; //当前只有局部变量$name可见,输出'dqr';
    global $name; //声明现在开始$name是全局变量的$name,而非局部变量$name了
    echo $name,'<br/>'; //当前$name指向的是全局版本的$name,输出'csc'
    $name = 'dqrcsc'; //修改的是全局变量版本的$name
    }
    test('dqr');
    echo $name; //在test()内部被修改,输出'dqrcsc'

    php中实际上还存在另一种作用域:超全局作用域,只看名字就知道比全局作用域NB了。
    超全局作用域:在函数内外都可见,一般用于php系统预定义的变量。如:$GLOBALS,$_GET,$_COOKIE等等都是所谓的
    超全局变量。也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。
    不需要在函数或方法中用 global $variable; 来访问它。
    这是就出现了另一种在函数内部访问全局变量的方法:
    $name = "csc";
    function test(){
    echo $GLOBALS['name']; //正常输出$name的值'csc'
    }
    test();
    当然,实质上访问的是超全局变量$GLOBALS,并不是直接访问全局变量$name。
    此时,若是出现同名的全局变量与局部变量呢?
    $name = "csc";
    function test($name){
    echo $name,'<br/>'; //当前只有局部变量$name可见,输出'dqr';
    echo $GLOBALS['name']; //访问的是全局变量$name,而非局部变量,输出'csc'
    }
    test('dqr');

  • 相关阅读:
    Atitit 人脸识别 眼睛形态 attilax总结
    Atitit 手机号码选号 规范 流程 attilax总结 v2 r99.docx
    atitit 板块分类 上市公司 龙头企业公司 列表 attilax总结.docx
    Atititi atiitt eam pam资产管理 购物表去年.xlsx
    使用cmd查看电脑连接过的wifi密码(一)
    常见十大web攻击手段 悟寰轩
    常见web攻击方式 悟寰轩
    【MYSQL数据库】MYSQL学习笔记mysql分区基本操作 悟寰轩
    Filter及FilterChain的使用详解 悟寰轩
    启动tomcat spring初始化两次问题(eg:@PostConstruct) 悟寰轩
  • 原文地址:https://www.cnblogs.com/dqrcsc/p/4390967.html
Copyright © 2020-2023  润新知