$GLOBALS && global

<?php
function test() {
    $foo = "local variable";

    echo '$foo in global scope: ' . $GLOBALS["foo"] . "\n";
    echo '$foo in current scope: ' . $foo . "\n";
}

$foo = "Example content";
test();
?>

$foo in global scope: Example content
$foo in current scope: local variable

注:$GLOBALS是自动全局变量。这意味着它在所有的脚本中都有效。在函数或方法中不需要使用 global $GLOBALS;来访问它

"global $var1;"是产生了函数外部$var1的别名变量"$var1",它不是真正的函数外部变量,他只存在于函数的内部,所以即使在函数内将别名变量删除也不会影响外面的变量,但是可以修改函数外部变量的值。

function t1(){
    global $var1,$var2;
    $var2=&$var1;

}
function t2(){
    $GLOBALS['var3']=&$GLOBALS['var1'];
}

$var1=5;
$var2=$var3=0;
t1();
print $var2."\n";
t2();
print $var3."\n";

0,5

function t1(){

    global $var1;

    $var1=2;

    unset($var1);

}

function t2(){

    $GLOBALS['var1']=3;

    unset($GLOBALS['var1']);

}

$var1=1;

t1();
print $var1."\n";

2

function test_global(){
    global $var1;
    $var1='ok';
    unset($var1);
}
test_global();
echo $var1; $var2=&$var1; unset($var1); echo $var2;

  okok

从结果可以看出,unset只是断开变量名与变量值连接,并没有马上销毁变量的值,而且在函数内部定义的全局变量,实际在外部只是使用了函数内部的别名而已,内部销毁也只是内部销毁,所以我们在外面依然可以访问$var1。

From:http://www.phpernote.com/php-function/1025.html

posted on 2015-12-15 13:59  阿卡贝拉  阅读(172)  评论(0)    收藏  举报