码迷,mamicode.com
首页 > Web开发 > 详细

PHP里global与$GLOBALS['']的区别

时间:2014-12-23 12:11:55      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

根据官方的解释是

  • $GLOBALS[‘var‘] 是外部的全局变量$var本身。
  • global $var 是外部$var的同名引用,即这两个变量指向同一个值。
     1 <?php
     2    $var1 = 1;
     3    $var2 = 2;
     4    function test() {
     5      $GLOBALS[‘var2‘] = &$GLOBALS[‘var1‘];
     6    }
     7  
     8    test();
     9    echo $var2;
    10 ?>

    打印结果为1

    <?php
    $var1 = 1;
    $var2 = 2;
    function test(){
        global $var1, $var2;
        $var2 = &$var1;
        echo $var2;
        $var2 = ‘snsgou.com‘;
    }
    
    test(); // 输出 1
    echo $var2; // 输出 2
    echo $var1; // 输出 snsgou.com
    ?>

     

  • test()函数中的$var1,$va2都是局部变量,只不过是加了global关键字后,分别引用指向全局变量$var1,$va2;

  • $var2 = &$var1;是将global var2里存入global var1的地址,而不影响全局变量var1里存的地址。 $var2 = &$var1; 时,局部变量$var2不再指向全局变量$val2,而重新指向全局变量$var1,换句话来说,局部变量$var2的改变,不会再影响到全局变量$val2,而会影响到重新指向的全局变量$val1
    <?php
    $var1 = 1;
    function test(){
        unset($GLOBALS[‘var1‘]);
    }
    test();
    echo $var1;
    ?>

    因为$var1被删除了,所以什么东西都没有打印。

    <?php
    $var1 = 1;
    
    function test(){
        global $var1;
        unset($var1);
    }
    
    test();
    echo $var1;
    ?>

    打印了1。因为只是把引用变量global var1给删除了,不影响全局变量var1。

PHP里global与$GLOBALS['']的区别

标签:

原文地址:http://www.cnblogs.com/lxxhad/p/4179764.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!