`
yukar
  • 浏览: 128335 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

PHP中全局变量的使用global和$GLOBALS[]

    博客分类:
  • php
 
阅读更多

用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'],调用外部变量的一个别名而已!

1
1
分享到:
评论

相关推荐

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

    总结起来,`global`关键字和`$GLOBALS`数组都是用来处理PHP全局变量的方式,但它们的使用场景和效果略有不同。`global`适用于在函数内部引用全局变量,而`$GLOBALS`数组可以直接读写全局变量,包括在函数内部进行...

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

    为了在函数内部使用全局变量,PHP提供了两种方式:`global`关键字和`$GLOBALS`数组。这两者虽然都与全局变量有关,但它们之间存在重要的区别。 首先,我们通过两个例子来对比它们的差异: 例一: ```php <?php $...

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

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

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

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

    PHP中$GLOBALS与global的区别详解

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

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

    2. 直接使用$GLOBAL访问全局变量比使用global关键字更灵活,但需要注意在数组中正确使用变量名。 ### 总结 global关键字和$GLOBAL数组都是PHP中访问全局变量的工具,它们各有优缺点。global关键字更适合在函数中...

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

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

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

    本文实例讲述了php多次include后导致全局变量global失效的解决方法。分享给大家供大家参考。具体分析如下: 在多个文件中,文件一个接一个include,但最后一个文件里的函数使用global后却无法引用全局变量。例如: a...

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

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

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

    全局变量在编程语言中扮演着重要的角色,尤其是在PHP中,它们允许你在函数或类的方法内外...了解并正确使用全局变量和`global`关键字是PHP编程中的基础技能,但要时刻警惕其潜在的风险,尽可能减少对全局变量的依赖。

    PHP超级全局变量详解.md

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

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

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

    PHP超全局变量实现原理及代码解析

    超全局变量在 PHP 4.1.0 中引入,是在全部作用域中始终可用的内置变量。 PHP 超全局变量 PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $...

    php_的global问题

    除了使用`global`关键字,PHP还提供了全局数组`$GLOBALS`,它可以用来访问任何全局变量,无需显式地使用`global`关键字。 示例代码: ```php $globalVar = "Hello, World!"; function displayUsingGlobals() { ...

    PHP变量作用域(全局变量&局部变量)&global&static关键字用法实例分析

    在这个例子中,`$x`是一个全局变量,我们使用`global $x`来告诉PHP在函数内部引用的是全局变量`$x`,而不是创建一个新的局部变量。 `static`关键字则是用来保持函数内部变量的状态。通常,函数每次调用时,其内部的...

Global site tag (gtag.js) - Google Analytics