php 中 global 与 $GLOBAL 由引用产生的区别

canca canca
2018-06-29 11:36
1
0










<?php

    $var1 = 1;

    $var2 = 2;

    function test() {

        $GLOBALS['var2'] = &$GLOBALS['var1'];

    }

     

    test();

    echo $var2;

    ?>






<?php

    $var1 = 1;

    $var2 = 2;

     

    function test(){

        global $var1, $var2;

        $var2 = &$var1;

        echo $var2;

        $var2 = 'qianyunlai.com';

    }

     

    test(); // 输出 1

    echo $var2; // 输出 2

    echo $var1; // 输出 qianyunlai.com

    ?>






<?php

$var1 = 1;

function test(){

    unset($GLOBALS['var1']);

}

test();

echo $var1;

?>






<?php

$var1 = 1;

 

function test(){

    global $var1;

    unset($var1);

}

 

test();

echo $var1;

?>





















<?php

$id = 1;

function test() {

    global $id;

    unset($id);

}

test();

echo($id); // 输出 1

?>









<?php

$GLOBALS["var1"] = 1;

$var = &$GLOBALS["var1"];

unset($var);

echo $GLOBALS['var1']; //输出1

//############################################

$GLOBALS["var1"] = 1;

$var = &$GLOBALS["var1"];

unset($GLOBALS['var1']);

echo $var; //输出1

//############################################

//如果写成如下,则会出错

$GLOBALS["var"] = 1;

$var = &$GLOBALS["var"];

unset($GLOBALS['var']);

echo $var; //脚本没法执行

//###########################################

?>















<?php

$var1 = "Example variable";

$var2 = "";

 

function global_references($use_globals) {

    global $var1, $var2;

    if (!$use_globals) {

        $var2 = &$var1; // visible only inside the function

    } else {

        $GLOBALS["var2"] = &$var1; // visible also in global context

    }

}

 

global_references(false);

echo "var2 is set to '$var2'\n"; // var2 is set to ''

global_references(true);

echo "var2 is set to '$var2'\n"; // var2 is set to 'Example variable'

?>







<?php

$bar = 3;

function foo(&$var) {

    $GLOBALS["baz"] = 5;

    $var = &$GLOBALS["baz"];

}

foo($bar);

echo $bar;//输出3

?>




















<?php

$a = 1;

$b = 2;

function Sum() {

    global $a, $b;

    $b = $a + $b;

}

Sum();

echo $b;

?>





发表评论