首页 > 其他 > 详细

关于global和$GLOBALS[]的一些实践---我有小尾巴

时间:2014-06-25 16:19:56      阅读:301      评论:0      收藏:0      [点我收藏+]

在我闲的蛋疼的时候,想起了全局变量,于是就果断百度谷歌,搜索结果还是蛮理想的,结果点击一看才知道,我擦,有么有这么坑爹,全他妈一样,连错别字都是一样滴,这
时我就想吐槽,不由想到吐槽神人熬尼玛。俺一张嘴。。。妈蛋,只有口水没有草
灭办法,就默默的自己测试一把!------这是我的小尾巴,你们看到了吗?啥?没有小尾巴。。。艾玛,我的小尾巴呢!
代码示例:
测试1:

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

结果:2
嗯,和自己理解一模一样
测试2:

1 <?php
2 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‘]。(别问我&是什么东西!)

关于global和$GLOBALS[]的一些实践---我有小尾巴,布布扣,bubuko.com

关于global和$GLOBALS[]的一些实践---我有小尾巴

原文:http://www.cnblogs.com/olaf/p/3806245.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!