麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

談談PHP中的global全局變量

2020-03-22 19:58:47
字體:
來源:轉載
供稿:網友
眾所周知,在PHP的函數中,如果想使用html' target='_blank'>全局變量,一種是使用超全局變量$GLOBALS,另一種是在函數中使用global關鍵字聲明,使用超全局變量$GLOBALS的方式大家都知道了,今天來好好聊一聊使用global方式來聲明變量。

我們來看如下例子:

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

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

我們聲明了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;

瀏覽器上打印輸出:

1122

上面的代碼中還使用了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;

通過瀏覽器輸出:

1122

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

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

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

相關教程:PHP視頻教程

以上就是談談PHP中的global全局變量的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美成人精品一区二区男人小说 | 亚洲免费视 | 免费国产自久久久久三四区久久 | 老女人碰碰在线碰碰视频 | 亚洲精品a在线观看 | 中国3xxxx | 久久精品视频首页 | 综合精品视频 | 久久艹逼 | 91婷婷射 | 欧美粗暴analvideos | 久久久一区二区三区精品 | 久久精品首页 | 毛片视频免费播放 | 加勒比色综合 | 国产污污视频 | 蜜桃网站免费 | 精品一区二区三区欧美 | 国产va在线观看免费 | 国产午夜精品一区二区三区免费 | 一本免费视频 | 亚洲自拍第二页 | 日韩黄色av | 欧美中文字幕一区二区 | 国产精品99久久99久久久二 | 在线观看国产一区二区三区 | 久久久久久久久久性 | 综合毛片 | 国产成人av免费看 | 欧美黄成人免费网站大全 | 亚洲精品一区二区三区免 | 激情综合婷婷久久 | 亚州精品天堂中文字幕 | 欧美性猛交xxxxx按摩国内 | 亚洲五码在线观看视频 | 国产人妖一区二区 | 国产小视频一区 | 成人免费毛片在线观看 | aaaaa国产欧美一区二区 | 欧美一区二区三区中文字幕 | 一本色道久久综合亚洲精品图片 |