標籤: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‘]。(別問我&是什麼東西!)