$GLOBALS——引用全局作用域中可用的全部变量。


$GLOBALS一个包含了全部变量的全局组合数组。变量的名字就是数组的键。(即所有出现过的全局变量,都可通过$GLOBALS获取到)

注释:
“Superglobal”也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的,不需要在函数或方法中用global $variable;来访问它。
与所有其他超全局变量不同,$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();

最新文章

  1. 关于JQ toggle 的注意事项
  2. solaris tar 命令exclude使用
  3. 【转】EL表达式 (详解)
  4. 在Android开发中使用Ant 三:批量打包
  5. 分享到QQ空间、新浪微博、腾讯微博的代码
  6. C#移动无标题栏窗体的四种代码
  7. Citrix 服务器虚拟化之五 Xenserver配置存储
  8. IT安全的本质
  9. Educational Codeforces Round 7 E. Ants in Leaves 贪心
  10. Z-Stack学习笔记
  11. 方案:抵御 不明SSL证书导致的 中间人攻击
  12. Android应用开发基础篇(8)-----SurfaceView
  13. iOS AVCaptureDevice的一些动西
  14. CHM木马
  15. BZOJ 1509: [NOI2003]逃学的小孩
  16. Python接口自动化
  17. vue中使用localstorage
  18. sql查询 !='' 和 is not null的区别
  19. cgi与fastcgi区别_转
  20. json keyname map

热门文章

  1. BZOJ 3698: XWW的难题
  2. react-native构建基本页面3---路由配置
  3. 解决vmware每次打开无法上网
  4. CSS:display:none的使用注意事项
  5. FatMouse's Speed HDU - 1160 最长上升序列, 线性DP
  6. 转载:polyphase filter
  7. C语言-基本数据类型
  8. GitBook的使用方式,快速创建网页文档
  9. Win10激活工具 —— HWIDGen的使用方法
  10. HDR视频生态圈追踪