函數(shù)內(nèi)部global和$GLOBALS[]區(qū)別

在網(wǎng)上偶然看到一道題

<?php
    $var1 = 1;
    $var2 = 2;

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

    demo();
    echo $var2;

在我的猜想之中輸出應(yīng)該是1,而不是2。官方給出的說法是:
$GLOBALS['var']是外部的全局變量$var本身。
global $var 是外部$var的同名引用或者指針。
說實話,沒看懂。

正解來了php中g(shù)lobal與$GLOBAL的區(qū)別分析

函數(shù)中的$var1,$va2都是局部變量,只不過是加了global關(guān)鍵字后,分別引用指向全局變量$var1,$va2了,當(dāng) $var2 = &$var1; 時,局部變量$var2不再指向全局變量$val2,而重新指向全局變量$var1,換句話來說,局部變量$var2的改變,不會再影響到全局變量$val2,而會影響到重新指向的全局變量$val1。
不過仍然有點似懂非懂;再來兩個例子加深印象

<?php
    $var1 = 1;
    $var2 = 2;

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

        //在函數(shù)內(nèi)部輸出var2變量
        echo $var2;
    }

    demo();
    echo $var2;

輸出結(jié)果是12
當(dāng) $var2 = &$var1; 時,局部變量$var2不再指向全局變量$val2,而重新指向全局變量$var1

<?php
    $var1 = 1;
    $var2 = 2;

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

        //此時這里應(yīng)該是var1加1了
        $var2++;
    }

    demo();
    //多輸出一個var1
    echo $var1;
    echo $var2;

輸出結(jié)果是22
局部變量$var2的改變,不會再影響到全局變量$val2,而會影響到重新指向的全局變量$val1

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容