PHP中全局变量的应用global和$GLOBALS[]
程序员文章站
2022-05-19 22:42:18
...
PHP中全局变量的使用global和$GLOBALS[]
用PHP开发项目,不可避免的会使用到全局变量,比如一些网站的配置信息,全站通用,那就可以在一个地方设置,然后多个地方调用。把变量定义为全局变量可以有两种方法:global和$GLOBALS[]。很多人都认为global和$GLOBALS[]只是写法不同而已,其实是有差别的。
先来看看global
php对global变量的解析是:Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。
看一下下面一段PHP代码:
$a=123;function test1(){global $a; //如果不把$a定义为global变量,函数体内是不能访问$a的echo $a; //123}test1();global $b;$b=456;function test2(){var_dump($b); //NULL}test2();function test3(){global $c;$c=789;}test3();echo $c; //789
?通过代码得出总结:在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用。
再来看看$GLOBALS[]
$var1 = 1; $var2 = 2; function test1(){ $GLOBALS['var2'] = &$GLOBALS['var1']; } test1(); echo $var2; //1$var3 = 1; $var4 = 2; function test2(){ global $var3,$var4; $var4 = &$var3; } test2(); echo $var4; //2
?为什么$var2的打印结果是1,而$var4的打印结果为2呢?其实就是因为$var3的引用指向了$var4的引用地址。$var4的实际值并没有改变。官方的解释是:$GLOBALS['var']是外部的全局变量本身,global $var是外部$var的同名引用或者指针。
也许这个例子还不是很清晰,我再引入一个例子:
$var1 = 1; function test1(){ unset($GLOBALS['var1']); } test1(); var_dump($var1); //NULL$var2 = 1; function test2(){ global $var2; unset($var2); } test2(); echo $var2; //1
?$var1的值被删除,而$var2的值还存在。这就证明,$var2只是别名引用,本身的值没有受到任何的改变。也就是说global $var其实就是$var = &$GLOBALS['var'],调用外部变量的一个别名而已!
相关文章
相关视频
推荐阅读
-
PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】 原创
-
php中global和$GLOBALS[]的分析之一
-
php中全局变量global的使用演示代码
-
应用开发中涉及到的css和php笔记分享
-
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
-
PHP中全局变量global和$GLOBALS[]的区别分析
-
PHP中addslashes()和htmlspecialchars() 函数的区别及应用
-
PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】 原创
-
PHP 中global 跟$GLOBALS[]的使用和区别
-
PHP中register_globals参数为OFF和ON的区别(register_globals_PHP