`

PHP全局变量:global与$GLOBALS的区别和使用

    博客分类:
  • PHP
PHP 
阅读更多

【前言】

   本文总结下PHP全局变量:global与$GLOBALS的区别和使用

 

【概论】

   (1)global是起传递参数的作用,而并非使变量的作用域为全局。

            global的正确用法是:"在一个函数中引入外部的一个变量,如果该变量没有通过参数传递进来,那么就通过global引入进来。" 也就是说,当一个函数引用一个外部变量时,可以在函数内通过global来声明该变量,这样该变量就可以在函数中使用了(相当于当作参数传递进来,并不是变为全局变量

   (2)$GLOBALS['var']是外部的全局变量本身。而global $var是外部$var的同名引用或者指针。

 

 

【详解】

1. 有些场合需要全局变量的出现,如下例子:

<?php    
$name="why";//定义变量name,并初始化    
function echoName()    {    
//试图引用函数外面的变量    
echo "myname is ".$name."<br>";    
}    
echoName();    
?>    

  上面的代码的结果为:"myname is" 。而不是期望中的:"myname is why"。因为函数没有传递参数$name的值,企图引用外部变量,不会成功。这时候考虑使用global

 

2. 于是将上述代码改为

 

<?php    
global $name="why";//用global声明的同时赋值    
function echoName()    {    
//试图引用函数外面的变量    
echo "myname is ".$name."<br>";    
}    
echoName();    
?>   

 

   结果为:Parse error: syntax error, unexpected '=', expecting ',' or ';' in http:\\xxxxxxx.com on line 2

也即上述代码有错误。原因是不能在用global声明变量的同时给变量赋值

 

3. 再次更改上述代码:

 

<?php    
global $name;    
$name="why";//将global声明与赋值分开    
function echoName()    {    
//试图引用函数外面的变量    
echo "myname is ".$name."<br>";    
}    
echoName();    
?>    

 

   但是得到的结果依然为:"myname is" ,原因是global的用法不对。

   global的正确用法是:"在一个函数中引入外部的一个变量,如果该变量没有通过参数传递进来,那么就通过global引入进来。" 也就是说,当一个函数引用一个外部变量时,可以在函数内通过global来声明该变量,这样该变量就可以在函数中使用了(相当于当作参数传递进来)。

 

4.于是进一步改动上述代码:

 

<?php    
$name="why";//定义变量name,并初始化    
function echoName()    {    
//通过global来声明$name,相当于传递参数    
global $name;    
echo "myname is ".$name."<br>";    
}    
echoName();    
?>    

 

   此时得到期望中的结果:"myname is why"。

   以上代码说明,global是起传递参数的作用,而并非使变量的作用域为全局。

 

5. 以下代码证明了这一点:

<?php    
$name="why";//声明变量$name,并初始化    
function echoName1()    {    
//在函数echoName1()里使用global来声明$name    
global  $name;    
echo "the first name is ".$name."<br>";    
}    
function echoName2()    {    
//在函数echoName2()里没有使用global来声明$name    
echo "the second name is ".$name."<br>";    
}    
echoName1();    
echoName2();    
?>    

   结果为:

   the first name is why

   the second name is

 

   上面的结果说明在函数echoName2()中,$name变量仍然是未知的,因为没有用global来声明,也就没有传递进去。同时也证明了global的作用并不是使变量的作用域为全局。

 

   当然,除了通过上述方法外,还可以使用全局数组$GLOBALS来解决问题,在需要用到外部变量的地方,使用$GLOBALS['var']就可以了。例:

<?php        
$name="why";//定义变量name,并初始化    
function echoName()    {    
//通过全局数组$GLOBALS来引用外部变量    
echo "myname is ".$GLOBALS['name']."<br>";    
}    
echoName();    
?>  

得到的结果为:   myname is why 

 

【总结】

   综上,global的作用就相当于传递参数,在函数外部声明的变量,如果在函数内想要使用,就用global来声明该变量,这样就相当于把该变量传递进来了,就可以引用该变量了。

 

 

 

 

 

 

 

 

 

 

 

 

.

分享到:
评论

相关推荐

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

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

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

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

    PHP中$GLOBALS与global的区别详解

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

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

    另一种访问全局变量的方法是使用内置数组$GLOBAL,它包含了所有全局变量的引用,通过键名(即变量名)可以访问到对应的全局变量。 #### 示例1:$GLOBALS数组使用 ```php &lt;?php $a = 1; $b = 2; test_globals(); ...

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

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

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

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

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

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

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

    在上面的示例中,我们创建了两个全局变量$x和$y,并在函数`addition()`内部使用$GLOBALS数组来访问并计算它们的和,然后将结果存储回$z。这样,即使在函数内部,我们也能修改或读取全局变量的值。这种方法在处理跨...

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

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

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

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

    PHP超级全局变量详解.md

    这里,`setName()`函数接收一个新的名字作为参数,并使用`$GLOBALS`来修改全局变量`$name`的值。调用`setName("Bob")`之后,`$name`的值变成了`Bob`。 **3. 注意事项** 虽然`$GLOBALS`提供了方便的全局变量访问...

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

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

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

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

    php_的global问题

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

    PHP全局变量与超级全局变量区别分析

    本文分析了PHP全局变量与超级全局变量区别。分享给大家供大家参考,具体如下: 全局变量就是在函数外面定义的变量。不能在函数中直接使用。因为它的作用域不会到函数内部。所以在函数内部使用的时候常常看到类似...

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

    但是,如果你想在函数内部使用全局变量,你需要使用`global`关键字来引入。例如: ```php $x = 5; function myFunction() { global $x; echo $x; // 输出5 } ``` 在这个例子中,`$x`是一个全局变量,我们使用`...

Global site tag (gtag.js) - Google Analytics