91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中global全局變量是什么

發布時間:2020-11-02 13:53:38 來源:億速云 閱讀:168 作者:小新 欄目:編程語言

PHP中global全局變量是什么?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

 眾所周知,在PHP的函數中,如果想使用全局變量,一種是使用超全局變量$GLOBALS,另一種是在函數中使用global關鍵字聲明,使用超全局變量$GLOBALS的方式大家都知道了,今天來好好聊一聊使用global方式來聲明變量。

我們來看如下例子:

$a = 1;
$b = 2;
function test() {
    global $a, $b;
}
test();

當我們執行test()函數時,在內存中變量的狀態是什么樣的呢?如下圖所示

PHP中global全局變量是什么

我們聲明了test函數,當調用test()函數時,global會在函數中聲明兩個局部變量$a, $b,并且分別指向全局變量$a和$b,此時的臨時變量$a和$b相當于全局變量$a和$b的引用。所以我們在函數中修改局部變量$a和$b的值就等同于修改了全局變量的值。

$a = 1;
$b = 2;
function test() {
    global $a, $b;
    $a = 11;
    $b = 12;
    unset($a);
    unset($b);
}
test();
echo $a;
echo '<br>';
echo $b;

瀏覽器上打印輸出:

11
22

上面的代碼中還使用了unset(),通過echo輸出能輸出全局變量$a, $b的值,這也說明test()函數里通過global關鍵字聲明的$a和$b只是局部變量,unset()只是斷開了局部變量與全局變量的引用。

我們來看另一種情況,如果我們在test函數中聲明的變量在全局變量中并沒有呢?

先說結論:如果在函數中使用global關鍵字聲明的變量在全局作用域并沒有同名變量,那么會先創建同名全局變量,再在函數中創建局部變量,同時將全局變量的引用指向局部變量。

function test() {
    global $a, $b;
    $a = 11;
    $b = 22;
    unset($a);
    unset($b);
}
echo $a;
echo '<br>';
echo $b;

通過瀏覽器輸出:

11
22

上面的代碼,我們在test函數中使用global聲明了變量$a, $b,雖然全局作用域并沒有聲明$a和$b,但是global依然會先創建全局變量$a和$b,然后在test函數中創建$a, $b,然后把全局變量的引用指向test函數的局部變量。所以即使我們在函數中unset了$a和$b,在函數執行完成后我們依然能打印出$a和$b,因為全局變量中已經存在著兩個變量了。

所以我們最終可以對得出如下結論:

在函數中使用global聲明變量時,會先在全局作用域查找是否有同名變量,如果有則將該全局變量的引用指向使用global聲明的同名局部變量。如果全局作用域沒有同名變量,那么就先創建同名全局變量,再創建局部變量,然后把全局變量的引用指向局部變量。

感謝各位的閱讀!看完上述內容,你們對PHP中global全局變量是什么大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

额济纳旗| 翼城县| 阜康市| 沙湾县| 策勒县| 沁源县| 漳平市| 泰顺县| 灯塔市| 黄骅市| 阿坝| 云南省| 登封市| 洪洞县| 渝北区| 长垣县| 霍州市| 土默特左旗| 麻阳| 铜陵市| 合江县| 浮山县| 高安市| 金湖县| 桃江县| 阜平县| 左权县| 抚州市| 霍邱县| 江北区| 平凉市| 甘泉县| 额济纳旗| 依安县| 台东县| 平乡县| 三都| 札达县| 株洲市| 山东省| 师宗县|