`

PHP中global和$GLOBALS[]的区别

 
阅读更多

很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然。

根据官方的解释是

1.$GLOBALS['var']是外部的全局变量本身

2.global $var是外部$var的同名引用或者指针。

举例说明一下:

  1. <?php
  2. $var1=1;
  3. $var2=2;
  4. functiontest(){
  5. $GLOBALS['var2']=&$GLOBALS['var1'];
  6. }
  7. test();
  8. echo$var2;
  9. ?>

正常打印结果为1

  1. <?php
  2. $var1=1;
  3. $var2=2;
  4. functiontest(){
  5. global$var1,$var2;
  6. $var2=&$var1;
  7. }
  8. test();
  9. echo$var2;
  10. ?>

意外打印结果为2

为什么会打印结果为2呢?其实就是因为$var1的引用指向了$var2的引用地址。导致实质的值没有改变。

我们再来看一个例子吧。

  1. <?php
  2. $var1=1;
  3. functiontest(){
  4. unset($GLOBALS['var1']);
  5. }
  6. test();
  7. echo$var1;
  8. ?>

因为$var1被删除了,所以什么东西都没有打印。

  1. <?php
  2. $var1=1;
  3. functiontest(){
  4. global$var1;
  5. unset($var1);
  6. }
  7. test();
  8. echo$var1;
  9. ?>

意外的打印了1。证明删除的只是别名|引用,起本身的值没有受到任何的改变。

明白了吧?

也就是说global $var其实就是$var = &$GLOBALS['var']。调用外部变量的一个别名而已

分享到:
评论

相关推荐

    全局变量中$GLOBALS['']和global的区别

    然而,当我们需要在函数内部使用全局变量时,有两种方式可以实现:`global`关键字和`$GLOBALS`数组。虽然两者都能访问全局变量,但它们在用法和效果上有所不同。 首先,`global`关键字是用来在函数内部引用全局变量...

    PHP语言中global和$GLOBALS[]的分析 之二

    在PHP编程语言中,`global`关键字和`$GLOBALS`数组是两个与全局变量相关的概念,它们虽然都与全局变量打交道,但在使用上有所区别。本文将继续深入分析这两个概念。 首先,`global`关键字用于在函数内部访问和操作...

    php中global和$GLOBALS[]的分析之一

    总结,理解和正确使用`global`关键字以及`$GLOBALS`数组是PHP编程中重要的概念,它们在处理全局变量时提供了灵活性,但过度依赖全局变量可能会导致代码难以维护和调试。因此,建议尽量减少全局变量的使用,提高代码...

    PHP中$GLOBALS与global的区别详解

    PHP中$GLOBALS和global都可以实现全局变量的功能,所以很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然。$GLOBALS 是一个超级全局变量,其实是一个数组,而global 则是一个声明全局变量的关键字! 一、...

    PHP中全局变量global和$GLOBALS[]的区别分析

    标题中提到的“global和$GLOBALS[]的区别分析”指出了两种不同的方法来处理全局变量,这两种方式虽然都可以达到访问全局变量的目的,但它们在机制和用法上有着本质的不同。 在给出的描述中,我们可以看到一个基本的...

    PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】 <font color=red>原创</font>

    本文将重点介绍PHP的global关键字和内置的$GLOBAL数组,探讨它们的使用方式、功能以及在使用过程中需要注意的事项,并通过示例代码来加深理解。 ### global关键字的使用 在PHP中,全局变量是在函数外部定义的变量...

    php多次include后导致全局变量global失效的解决方法

    因此,当我们在函数中使用`global`关键字时,PHP会在当前函数作用域中寻找名为`$aa`的全局变量,但由于在`show()`函数的作用域中,变量`$aa`并没有被声明,所以其值为null。 要解决这个问题,可以采用几种方法: 1...

    PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析

    在PHP中,超级全局变量是一类特殊的变量,它们在整个脚本的任何作用域内都可访问,无需在函数或类的方法中使用global关键字来声明。本篇文章将深入探讨三个重要的PHP超级全局变量:$GLOBALS,$_SERVER和$_REQUEST。 ...

    php_的global问题

    `global`关键字和全局数组`$GLOBALS`是PHP中解决变量作用域限制的有效工具。然而,它们的使用应当遵循最佳实践,避免不必要的性能损失和代码混乱。掌握这些概念对于编写高效、清晰的PHP代码至关重要。在实际开发中,...

    PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】 原创

    本文实例讲述了PHP global全局变量的使用与注意事项。分享给大家供大家参考,具体如下: 使用global在方法里面声明外部变量为全局变量,即可以调用该变量。 示例1. global基本用法 &lt;?php $a=1; $b=2; test_...

    PHP超级全局变量详解.md

    总结来看,`$GLOBALS`、`$_SERVER`和`$_REQUEST`都是PHP中非常有用的超全局变量。它们各自有着不同的用途,但在实际开发中都扮演着重要的角色。合理地使用这些超全局变量可以帮助开发者更好地管理和处理PHP程序中的...

    PHP程序设计-3期(KC016) 经验技巧2-3 全局变量.doc

    正确使用`global`关键字和`$GLOBALS`数组可以帮助你在函数内部访问和修改全局变量,但应谨慎使用,以避免代码混乱和潜在的错误。在编写PHP程序时,尽可能地限制变量的作用域,使用局部变量,并通过参数传递数据,以...

    php中全局变量global的使用演示代码

    尽管`global`关键字和`$GLOBALS`都可以用来访问全局变量,但它们之间有区别: - `global`关键字直接引用全局变量,而`$GLOBALS`则是一个数组,通过键值访问。 - 使用`global`可以在函数内部直接操作全局变量,而`$...

    php代码-global

    理解并合理使用`global`是PHP开发中的重要一环,因为它涉及到变量的作用域和生命周期。 ### 全局变量与局部变量 1. **全局变量(Global Variables)**:在函数外部定义的变量称为全局变量。它们在整个脚本中都是...

    php代码-PHP global 关键字

    在PHP编程语言中,`global`关键字是用来在函数内部访问全局变量的一个重要工具。全局变量是在函数外部定义的,它们在整个脚本范围内都是可见的,而不仅仅是局限于某个函数或块。`global`关键字允许我们在函数内部...

Global site tag (gtag.js) - Google Analytics