/ php

PHP $GLOBALS变量和global关键字

本质区别

$GLOBALS['var']是外部的全局变量本身;global $var是外部$var的同名引用或者指针。

代码演示

<?php
    $var1 = 1;  
    function test1(){  
        unset($GLOBALS['var1']);  
    }  
    test1();  
    echo $var1;  

    $var2 = 2;  
    function test2(){  
        global  $var2;  
        unset($var2);  
    }  
    test2();  
    echo $var2; 

结论

上述代码最终的打印结果只打印了“2”。test1中unset了$var1,因此外部也访问不到,而test2中unset的只是$var2的同名引用,所以外部的变量还存在,这说明了$GLOBALS变量和global关键字两者的机制还是不同的。