global與$GLOBALS區(qū)別

有些場合需要全局變量的出現(xiàn)舟肉,如下例子:

<?php
$name="why";//定義變量name,并初始化    
function echoName()    
{    
//試圖引用函數(shù)外面的變量    
echo "myname is ".$name."<br>";    
}    
echoName();    
?>

上面的代碼的結(jié)果為:"myname is" 渗饮。而不是期望中的:"myname is why"知纷。因?yàn)楹瘮?shù)沒有傳遞參數(shù)$name的值橘洞,企圖引用外部變量,不會成功办陷。這時候考慮使用global貌夕。
2.于是將上述代碼改為

<?php    
global $name="why";//用global聲明的同時賦值    
function echoName()    
{    
//試圖引用函數(shù)外面的變量    
echo "myname is ".$name."<br>";    
}    
echoName();    
?> 

結(jié)果為:Parse error: syntax error, unexpected '=', expecting ',' or ';' in http:\xxxxxxx.com on line 2也即上述代碼有錯誤。原因是不能在用global聲明變量的同時給變量賦值民镜。
3.再次更改上述代碼:

<?php    
global $name;    
$name="why";//將global聲明與賦值分開    
function echoName()    
{    
//試圖引用函數(shù)外面的變量    
echo "myname is ".$name."<br>";    
}    
echoName();    
?>

但是得到的結(jié)果依然為:"myname is" ,原因是global的用法不對啡专。
global的正確用法是:"在一個函數(shù)中引入外部的一個變量,如果該變量沒有通過參數(shù)傳遞進(jìn)來制圈,那么就通過global引入進(jìn)來们童。" 也就是說,當(dāng)一個函數(shù)引用一個外部變量時鲸鹦,可以在函數(shù)內(nèi)通過global來聲明該變量慧库,這樣該變量就可以在函數(shù)中使用了(相當(dāng)于當(dāng)作參數(shù)傳遞進(jìn)來)。

4.于是進(jìn)一步改動上述代碼:
<?php    
$name="why";//定義變量name,并初始化    
function echoName()    
{    
//通過global來聲明$name馋嗜,相當(dāng)于傳遞參數(shù)    
global $name;    
echo "myname is ".$name."<br>";    
}    
echoName();    
?>    

此時得到期望中的結(jié)果:"myname is why"齐板。以上代碼說明,global是起傳遞參數(shù)的作用葛菇,而并非使變量的作用域?yàn)槿帧?/p>

5.以下代碼證明了這一點(diǎn):

<?php    
$name="why";//聲明變量$name,并初始化    
function echoName1()    
{    
//在函數(shù)echoName1()里使用global來聲明$name    
global  $name;    
echo "the first name is ".$name."<br>";    
}    
function echoName2()    
{    
//在函數(shù)echoName2()里沒有使用global來聲明$name    
echo "the second name is ".$name."<br>";    
}    
echoName1();    
echoName2();    
?>    

結(jié)果為:the first name is whythe second name is上面的結(jié)果說明在函數(shù)echoName2()中甘磨,$name變量仍然是未知的,因?yàn)闆]有用global來聲明熟呛,也就沒有傳遞進(jìn)去宽档。同時也證明了global的作用并不是使變量的作用域?yàn)槿治疽獭>C上庵朝,global的作用就相當(dāng)于傳遞參數(shù),在函數(shù)外部聲明的變量又厉,如果在函數(shù)內(nèi)想要使用九府,就用global來聲明該變量,這樣就相當(dāng)于把該變量傳遞進(jìn)來了覆致,就可以引用該變量了侄旬。當(dāng)然,除了通過上述方法外煌妈,還可以使用全局?jǐn)?shù)組$GLOBALS來解決問題儡羔,在需要用到外部變量的地方,使用$GLOBALS['var']就可以了璧诵。
例:

<?php    
    
$name="why";//定義變量name,并初始化    
function echoName()    
{    
//通過全局?jǐn)?shù)組$GLOBALS來引用外部變量    
echo "myname is ".$GLOBALS['name']."<br>";    
}    
echoName();    
?>    

得到的結(jié)果為: myname is why 汰蜘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市之宿,隨后出現(xiàn)的幾起案子族操,更是在濱河造成了極大的恐慌,老刑警劉巖比被,帶你破解...
    沈念sama閱讀 211,496評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件色难,死亡現(xiàn)場離奇詭異泼舱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)枷莉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評論 3 385
  • 文/潘曉璐 我一進(jìn)店門娇昙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人依沮,你說我怎么就攤上這事涯贞。” “怎么了危喉?”我有些...
    開封第一講書人閱讀 157,091評論 0 348
  • 文/不壞的土叔 我叫張陵宋渔,是天一觀的道長。 經(jīng)常有香客問我辜限,道長皇拣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,458評論 1 283
  • 正文 為了忘掉前任薄嫡,我火速辦了婚禮氧急,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毫深。我一直安慰自己吩坝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,542評論 6 385
  • 文/花漫 我一把揭開白布哑蔫。 她就那樣靜靜地躺著钉寝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪闸迷。 梳的紋絲不亂的頭發(fā)上嵌纲,一...
    開封第一講書人閱讀 49,802評論 1 290
  • 那天,我揣著相機(jī)與錄音腥沽,去河邊找鬼逮走。 笑死,一個胖子當(dāng)著我的面吹牛今阳,可吹牛的內(nèi)容都是我干的师溅。 我是一名探鬼主播,決...
    沈念sama閱讀 38,945評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼盾舌,長吁一口氣:“原來是場噩夢啊……” “哼墓臭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起矿筝,我...
    開封第一講書人閱讀 37,709評論 0 266
  • 序言:老撾萬榮一對情侶失蹤起便,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榆综,經(jīng)...
    沈念sama閱讀 44,158評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡妙痹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,502評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鼻疮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怯伊。...
    茶點(diǎn)故事閱讀 38,637評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖判沟,靈堂內(nèi)的尸體忽然破棺而出耿芹,到底是詐尸還是另有隱情,我是刑警寧澤挪哄,帶...
    沈念sama閱讀 34,300評論 4 329
  • 正文 年R本政府宣布吧秕,位于F島的核電站,受9級特大地震影響迹炼,放射性物質(zhì)發(fā)生泄漏砸彬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,911評論 3 313
  • 文/蒙蒙 一斯入、第九天 我趴在偏房一處隱蔽的房頂上張望砂碉。 院中可真熱鬧,春花似錦刻两、人聲如沸增蹭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滋迈。三九已至,卻和暖如春偏瓤,著一層夾襖步出監(jiān)牢的瞬間杀怠,已是汗流浹背椰憋。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評論 1 266
  • 我被黑心中介騙來泰國打工厅克, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人橙依。 一個月前我還...
    沈念sama閱讀 46,344評論 2 360
  • 正文 我出身青樓证舟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親窗骑。 傳聞我的和親對象是個殘疾皇子女责,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,500評論 2 348

推薦閱讀更多精彩內(nèi)容