PHP 超全局变量之$GLOBALS
$GLOBALS
——引用全局作用域中可用的全部变量。
$GLOBALS
一个包含了全部变量的全局组合数组。变量的名字就是数组的键。(即所有出现过的全局变量,都可通过$GLOBALS获取到)
1 2 | 注释: “Superglobal”也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的,不需要在函数或方法中用global $variable;来访问它。< br >与所有其他超全局变量不同,$GLOBALS在PHP中总是可用的。 |
在PHP中,定义在函数体外的全局变量,函数内部是不能直接获取的,所以需要global声明或者$GLOBALS[]来获取。
$GLOBALS
和 global
的区别:
- $GLOBALS['variable'] 是外部的全局变量$variable本身。
- global $variable 是外部$variable的同名引用或者指针。把 global $variable; 当成是 $variable = & $GLOBALS['variable']; 的简写。也就是在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量。【PHP变量函数里指出:在 Zend 引擎 1 代,它驱动了 PHP4,对于变量的 static 和 global 定义是以引用的方式实现的。例如,在一个函数域内部用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用。】
下面一个简单的例子说明:
$a = 1; $b = 2; function Test1(){ echo $a; //输出 :Notice: Undefined variable: a global $a; echo $a; //输出: 1 unset($a); } Test1(); echo $a; // 输出:1 function Test2(){ echo $GLOBALS['a']; //输出: 1 unset($GLOBALS['a']); } Test2(); echo $a;//输出:Notice: Undefined variable: a
$GLOBALS
和 global
的相同点:
- 可以在函数内部使用函数外声明的变量;
- 在函数体外声明全局变量没有意义,在函数内部也无法使用。
例子:
global $a; $a = 1; function Test3(){ echo $a; //输出:Notice: Undefined variable: a } Test3(); $GLOBALS['b'] = 2; function Test4(){ echo $b; //输出:Notice: Undefined variable: b } Test4();
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析