淺析global與$GLOBALS的區(qū)別

前兩天看到一道關(guān)于global與$GLOBALS的面試題减江,覺(jué)得挺有趣,廢話(huà)不多說(shuō)捻爷,直接上代碼(在簡(jiǎn)書(shū)編輯器上手打代碼太凌亂了辈灼,所以就貼圖啦~\(≧▽≦)/~):

? ? ? 相信大家看完代碼,都一定會(huì)有自己的答案也榄,我在看完代碼之后巡莹,斬釘截鐵、毫不猶豫甜紫、毅然決然地表示降宅,輸出結(jié)果是55,骨感的現(xiàn)實(shí)告訴我囚霸,我還是 too young too simple钉鸯,正確的答案其實(shí)是05,這道題其實(shí)就是考察global與$GLOBALS之間的區(qū)別邮辽,下面進(jìn)行一下分析:

? ? ? 我們首先來(lái)看一個(gè)例子(抱歉唠雕,又貼圖啦)

執(zhí)行結(jié)果為:a,我就納悶了吨述,不是unset了嗎岩睁,怎么還輸出a呀,難道unset失效揣云?我們?cè)赿emo函數(shù)中捕儒,echo $a看一下,unset是否生效。

執(zhí)行結(jié)果為:Notice: Undefined variable: a in G:\wamp\www\test.php on line8刘莹,unset是生效的阎毅,這說(shuō)明,demo中的$a與函數(shù)外的$a点弯,其實(shí)是不一樣的扇调。經(jīng)過(guò)查詢(xún)PHP文檔得知,函數(shù)內(nèi)global的變量與函數(shù)外的全局變量抢肛,其實(shí)是不一樣的變量狼钮,既然是不一樣的變量,我們?yōu)榱嗣枋龇奖慵裥酰謩e給它們?nèi)〔煌拿郑?b>demo->$a(函數(shù)內(nèi)global的變量)熬芜,$a(全局變量),demo->$a和$a指向的是同一個(gè)物理內(nèi)存地址福稳,當(dāng)unset demo->$a時(shí)涎拉,對(duì)$a是沒(méi)有影響的,$a還是指向那個(gè)內(nèi)存地址的圆,內(nèi)存地址存放的值曼库,還是之前的字符串a(chǎn)。當(dāng)我們把demo函數(shù)中的 global $a替換成$GLOBALS['a']時(shí)略板,如下

執(zhí)行結(jié)果為:Notice: Undefined variable: a in G:\wamp\www\test.php on line10,說(shuō)明$GLOBALS['a']與函數(shù)外的$a就是同一個(gè)變量毁枯,不是雙胞胎,不是親兄弟叮称,他就是同一個(gè)人呀V致辍!瓤檐!~~~赂韵,所以在函數(shù)中unset,函數(shù)外就直接報(bào)錯(cuò)了挠蛉〖朗荆總結(jié)一下:函數(shù)內(nèi)global和全局變量其實(shí)還是兩個(gè)不一樣的變量,只是兩個(gè)變量之間是引用關(guān)系(推了推黑框眼鏡)谴古,而$GLOBALS['a']和全局變量$a质涛,就是同一個(gè)變量。有了這個(gè)結(jié)論掰担,我們?cè)賮?lái)看上面的面試題汇陆,就豁然開(kāi)朗啦(為了大家不用再倒回去看代碼,此處再貼一次代碼)

test_global函數(shù)中带饱,用的是global毡代,所以test_global->$var1, $var2(global $var1, $var2)和函數(shù)外的$var1, $var2其實(shí)是不同的變量阅羹,只是存在引用關(guān)系。test_global函數(shù)中教寂,改變的只是test_global->$var1, $var2(global $var1, $var2)的指向關(guān)系捏鱼,并不影響函數(shù)外的$var1, $var2的指向,所以第一個(gè)輸出是0酪耕。test_globals函數(shù)导梆,用的是$GLOBALS['var3'],上文已經(jīng)說(shuō)過(guò)因妇,$GLOBALS['var3']和$var3就是同一個(gè)變量问潭,那改變了$GLOBALS['var3']的指向猿诸,就是改變$var3的指向了嘛婚被,所以,第二個(gè)輸出就是5梳虽。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末址芯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子窜觉,更是在濱河造成了極大的恐慌谷炸,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禀挫,死亡現(xiàn)場(chǎng)離奇詭異旬陡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)语婴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)描孟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人砰左,你說(shuō)我怎么就攤上這事匿醒。” “怎么了缠导?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵廉羔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我僻造,道長(zhǎng)憋他,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任髓削,我火速辦了婚禮举瑰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蔬螟。我一直安慰自己此迅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著耸序,像睡著了一般忍些。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坎怪,一...
    開(kāi)封第一講書(shū)人閱讀 51,215評(píng)論 1 299
  • 那天罢坝,我揣著相機(jī)與錄音,去河邊找鬼搅窿。 笑死嘁酿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的男应。 我是一名探鬼主播闹司,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼沐飘!你這毒婦竟也來(lái)了游桩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤耐朴,失蹤者是張志新(化名)和其女友劉穎借卧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體筛峭,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铐刘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了影晓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片镰吵。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖俯艰,靈堂內(nèi)的尸體忽然破棺而出捡遍,到底是詐尸還是另有隱情,我是刑警寧澤竹握,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布画株,位于F島的核電站,受9級(jí)特大地震影響啦辐,放射性物質(zhì)發(fā)生泄漏谓传。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一芹关、第九天 我趴在偏房一處隱蔽的房頂上張望续挟。 院中可真熱鬧,春花似錦侥衬、人聲如沸诗祸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)直颅。三九已至博个,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間功偿,已是汗流浹背盆佣。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留械荷,地道東北人共耍。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像吨瞎,于是被迫代替她去往敵國(guó)和親痹兜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

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

  • 一关拒、php可以做什么 php是一種可以在服務(wù)器端運(yùn)行的編程語(yǔ)言佃蚜,可以運(yùn)行在Web服務(wù)器端庸娱。 php是一門(mén)后臺(tái)編程語(yǔ)...
    空谷悠閱讀 3,096評(píng)論 4 97
  • 一着绊、數(shù)組 1、數(shù)組定義 數(shù)組就是一個(gè)鍵值對(duì)組成的語(yǔ)言結(jié)構(gòu)熟尉,鍵類(lèi)似于酒店的房間號(hào)归露,值類(lèi)似于酒店房間里存儲(chǔ)的東西。 $...
    空谷悠閱讀 808評(píng)論 4 11
  • Shell 初識(shí) 一斤儿、程序 1剧包、什么是程序 程序是為實(shí)現(xiàn)特定目標(biāo)或解決特定問(wèn)題而用計(jì)算機(jī)語(yǔ)言編寫(xiě)的命令序列的集合。...
    kobe_liu閱讀 373評(píng)論 0 0
  • 在網(wǎng)上偶然看到一道題 在我的猜想之中輸出應(yīng)該是1往果,而不是2疆液。官方給出的說(shuō)法是:$GLOBALS['var']是外部...
    415b121ad7bf閱讀 253評(píng)論 0 0
  • 首先,部分內(nèi)容得轉(zhuǎn)載下: 原文鏈接:https://www.runoob.com/python3/python3-...
    抱緊微軟閱讀 678評(píng)論 0 2