PHP中global跟$GLOBALS[]的区别
程序员文章站
2024-02-19 23:41:22
...
PHP中global和$GLOBALS[]的区别
很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然。
根据官方的解释是
1.$GLOBALS['var']是外部的全局变量本身
2.global $var是外部$var的同名引用或者指针。
举例说明一下:
- <?php??
- $var1?=?1;??
- $var2?=?2;??
- function?test(){??
- ????$GLOBALS['var2']?=?&$GLOBALS['var1'];??
- }??
- test();??
- echo?$var2;??
- ?>??
正常打印结果为1
- <?php??
- $var1?=?1;??
- $var2?=?2;??
- function?test(){??
- ????global?$var1,$var2;??
- ????$var2?=?&$var1;??
- }??
- test();??
- echo?$var2;??
- ?>??
意外打印结果为2
为什么会打印结果为2呢?其实就是因为$var1的引用指向了$var2的引用地址。导致实质的值没有改变。
我们再来看一个例子吧。
- <?php??
- $var1?=?1;??
- function?test(){??
- ????unset($GLOBALS['var1']);??
- }??
- test();??
- echo?$var1;??
- ?>??
因为$var1被删除了,所以什么东西都没有打印。
- <?php??
- $var1?=?1;??
- function?test(){??
- ????global??$var1;??
- ????unset($var1);??
- }??
- test();??
- echo?$var1;??
- ?>??
意外的打印了1。证明删除的只是别名|引用,起本身的值没有受到任何的改变。
明白了吧?
也就是说global $var其实就是$var = &$GLOBALS['var']。调用外部变量的一个别名而已
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
推荐阅读
-
PHP中global跟$GLOBALS[]的区别
-
php中is_file跟file_exist的区别
-
php中在变量和函数前加static关键字之后的区别
-
php基础-范例:global和static的使用和区别
-
PHP关键字global在定义变量中的作用
-
【PHP基础知识】$GLOBALS['']和global区别
-
php中跳出函数break,continue,exit的使用与区别
-
PHP中isset(变量)跟直接判断变量的区别
-
再讲php中require(),include(),require_once()和include_once()他们的区别_PHP教程
-
php中is_file和file_exists与is_dir的区别
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论