關於global和$GLOBALS[]的一些實踐---我有小尾巴

來源:互聯網
上載者:User

標籤:style   class   blog   code   color   使用   

在我閑的蛋疼的時候,想起了全域變數,於是就果斷百度Google,搜尋結果還是蠻理想的,結果點擊一看才知道,我擦,有麼有這麼坑爹,全他媽一樣,連錯別字都是一樣滴,這
時我就想吐槽,不由想到吐槽神人熬尼瑪。俺一張嘴。。。媽蛋,只有口水沒有草
滅辦法,就默默的自己測試一把!------這是我的小尾巴,你們看到了嗎?啥?沒有小尾巴。。。艾瑪,我的小尾巴呢!
程式碼範例:
測試1:

1 <?php2 function test(){3     global  $var;4     $var ++;5 }6 $var = 1;7 test();  8 echo $var;

結果:2
嗯,和自己理解一模一樣
測試2:

1 <?php2 global $var;3 $var = 1;  4 function test(){  5     $var ++;  6 }  7 test();  8 echo $var;

結果:我想你們都知道是神馬結果

總結:在函數體內定義的global變數,函數體外可以使用,在函數體外定義的global變數不能在函數體內使用;

再來:
測試3:

1 <?php  2 $var = 1;  3 function test(){  4     global $var;  5     unset($var);  6 }  7 test();  8 echo $var;

嘿嘿,親,您覺得應該輸出神馬,一運行,我擦居然輸入1,TM的unset失效了,為嘛?好吧,我給你的解釋是,函數中global $val,但是,函數外面也有一個$val,你要絕對相信,他不是他,
他是是他的一個別名,神馬識別名,你問我?嘿嘿!
在測試1中,$var ++ 結果為2,測試3unset($val) 為啥還是1?因為他操作的是別名的那個他,這裡我們把他說成它,別名他=>它。你幹掉了它,但是還有一個他;咋樣,俺們解釋的非常清楚撒,當然,應為我有個小尾巴!耶。。。我的小尾巴呢!

ok,既然說到了global,那咋也來說說這個這個那個啥$GLOBALS[],到這裡,如果你要說這不是同一個人嗎,一個是小名,一個還是小名;那我就嘿嘿了,哦不,是hehe;
官方解釋:$GLOBALS[‘var‘]是外部的全域變數本身,global $var是外部$var的同名引用或者指標。
看測試;
測試4:

1 <?php  2 $var = 1;  3 function test(){  4     unset($GLOBALS[‘var‘]);  5 }  6 test();  7 echo $var;

 


結果:啥都沒有;為啥和測試3不一樣?誰告訴你她(他/它)們一樣了。這裡只有他,沒有它;
明白!?
所以根據官方與測試案例總結:global $var其實就是$var = &$GLOBALS[‘var‘]。(別問我&是什麼東西!)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.