• 关于$GLOBALS 和 global 关键字的区别


    区别就是:

    用 $GLOBALS 调的是 全局变量本身!是全局变量本身!是它自己本身!

    而用global 关键字声明 则是对 全局变量本身 的一个引用(也就是起一个别名)

    talk is cheap, show you the code!

    例 1:关键字  global

    <?php
    
    $lisi = 'lisi';
    $zhangsan = 'zhangsan';
    
    // 使用global 关键字
    function _global() {
         global $lisi, $zhangsan;
        /*
        这里 global 的作用就是(以 $lisi 为例):
        把全局的 $lisi 引用到 局部作用域(alias 函数)里面
        此时局部变量中的 $lisi 和 全局的 $lisi 是 【不同】 的两个变量。
        只不过 局部的 $lisi 是 全局 $lisi 的一个别名。看下面的表达式。
        局部 = 引用全局
        $lisi = &lisi; 
        */
        echo $lisi, "
    "; // lisi 因为是全局$lisi的别名,所以它的值 也是 lisi
        
        /*
        在局部操作的 $lisi, 【始终】是局部的$lisi。 
        因为引用全局的 $lisi,所以在改变局部的$lisi 的值以后(普通的赋值),
        全局的$lisi 的值也会改变
        */
        $lisi = 'wangwu'; // 此时,局部和全局的 $lisi 的值 都改变为 'wangwu'
        echo $lisi, "
    "; // wangwu
    
        // 现在 局部的$lisi 不再引用 全局的 $lisi, 改为引用 $zhangsan
        $lisi = &$zhangsan; // 此时,局部 $lisi 断开了和全局$lisi 引用,两者已经没有任何关系了
    
        echo $lisi, "
    "; // zhangsan     现在局部 $lisi 的值是  'zhangsan', 而全局 $lisi 依然是 'wangwu'
    
        // 现在把 局部 $lisi 删除,并不会影响任何一个全局变量
        unset($lisi);//  这时,全局的 $lisi 是'wangwu' ,$zhangsan 是 'zhangsan'
    }
    
    
    _global(); // lisi -> wangwu -> zhangsan
    echo $lisi, "
    "; // wangwu
    echo $zhangsan, "
    "; // zhangsan

    例 2:超全局变量 $GLOBALS

    <?php
    $lisi = 'lisi';
    $zhangsan = 'zhangsan';
    
    function _GLOBALS() {
        /*
        通过 超全局变量 $GLOBALS 操作的变量,即是 全局变量本身, 没有局部变量的概念了
        */
        $GLOBALS['lisi'] = 'wangwu'; // 操作的就是 全局变量 $lisi 本身
        $GLOBALS['lisi'] = &$GLOBALS['zhangsan']; // 全局变量 $lisi 引用了 全局变量 $zhangsan
    
        $GLOBALS['lisi'] = 'zhaoliu'; // 此时 全局变量 $lisi 和 $zhangsan 的值 都改变为 'zhaoliu'
    
        unset($GLOBALS['lisi']); // 将全局变量 $lisi 销毁 
    }
    
    _GLOBALS();
    echo $zhangsan; // zhaoliu
    echo $lisi; // undefined variable 

    本人如果理解有偏差,还望各位指出

      

    Talk is cheap, show me the code.
  • 相关阅读:
    Java学习笔记二.2
    Java学习笔记二.1
    Java学习笔记一
    cookie和session笔记
    编码知识笔记
    新手前端笔记之--css盒子
    新手前端笔记之--初识css
    新手前端笔记之--必备的标签
    新手前端笔记之--初识html标签
    二叉树总结
  • 原文地址:https://www.cnblogs.com/cidgur/p/8889388.html
Copyright © 2020-2023  润新知