PHP学习:PHP超全局变量(Superglobal)$GLOBALS的介绍以及和global的区别

PHP超全局变量有很多,如下的都属于超全局变量Superglobal

$GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV。

官方说明:

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

一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

即出现过的全局变量,就可以通过$GLOBALS这个数组取得。

PHP生命周期中,定义在函数体外部的所谓全局变量,函数内部是不能直接获得的。

 

 
 
  1. <?php  
  2. $foo = "Example content";  
  3. test();  
  4. function test() {  
  5.     $foo = "local variable";  
  6.     echo '$foo in current scope: ' . $foo . "<br>";  
  7.     echo '$foo in global scope: ' . $GLOBALS["foo"] . "<br>";  

 

如上的例子,要访问外部的$foo必须使用 $GLOBALS数组。对于通过include文件进来的外部全局变量也适用。

php中global也有这样的功能。它和$GLOBALS的区别在于。

global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量。

$GLOBALS[]确确实实调用是外部的变量,函数内外会始终保持一致!

对于类中的成员变量,类中函数必须使用$this->的方式访问,不能用$GLOBALS方式:

 
 
  1. <?php  
  2. test{  
  3.     public $count=0;  
  4.     public function add(){  
  5.         $this->count=$this->count+2;  
  6.         return $this->count;  
  7.     }  
  8. }  
  9. $a=new test();  
  10. echo $a->add();  
  11. ?> 

而不能直接如下写法

$count=$count+2;

return $count;

 
 
  1. <?php  
  2. $foo = "Example content";  
  3. test();  
  4. function test() {  
  5. unset( $GLOBALS["foo"] );  
  6. }  
  7. echo $foo

上述代码运行,会报错:Undefined variable: foo。说明$GLOBALS["foo"]就是外面的$foo本身。

 
 
  1. <?php  
  2. $foo = "Example content";  
  3. test();  
  4. function test() {  
  5. global $foo;  
  6. unset($foo);  
  7. }  
  8. echo $foo

上述代码改成了global方式,运行后,成功打印出Example content

说明unset并未真正释放掉$foo变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值