`
star690178485
  • 浏览: 7019 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
最近访客 更多访客>>
社区版块
存档分类
最新评论

php中global和$GLOBALS[]的分析

    博客分类:
  • php
php 
阅读更多
Global问题
php里面的global的使用。如下例子:
<?php
$name="even";//定义变量name,并初始化
function echoName()
{
//试图引用函数外面的变量
echo "myname is ".$name."<br>";
}
echoName();
?>
分析:
上面的代码的结果为:"myname is" 。而不是期望中的:"myname is even "。因为函数没有传递参数$name的值,企图引用外部变量,不会成功。这时候考虑使用global。

于是将上述代码改为
<?php
global $name="even";//用global声明的同时赋值
function echoName()
{
//试图引用函数外面的变量
echo "myname is ".$name."<br>";
}
echoName();
?>
结果为:Parse error: syntax error, unexpected '=', expecting ',' or ';' in D:\phpserver\www\test\test.php on line 2
也即上述代码有错误。原因是不能在用global声明变量的同时给变量赋值。
再次更改上述代码:
<?php
global $name;
$name="even";//将global声明与赋值分开
function echoName()
{
//试图引用函数外面的变量
echo "myname is ".$name."<br>";
}
echoName();
?>
    但是得到的结果依然为:"myname is" 。
    原因是global的用法不对,global的正确用法是:"在一个函数中引入外部的一个变量,如果该变量没有通过参数传递进来,那么就通过global引入进来。" 也就是说,当一个函数引用一个外部变量时,可以在函数内通过global来声明该变量,这样该变量就可以在函数中使用了(相当于当作参数传递进来)。

于是进一步改动上述代码:
<?php
$name="even";//定义变量name,并初始化
function echoName()
    {
   //通过global来声明$name,相当于传递参数
   global $name;
   echo "myname is ".$name."<br>";
}
echoName();
?>
此时得到期望中的结果:"myname is even "。

以上代码说明,global是起传递参数的作用,而并非使变量的作用域为全局。以下代码证明了这一点:
<?php
$name="even";//声明变量$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 even
the second name is
上面的结果说明在函数echoName2()中,$name变量仍然是未知的,因为没有用global来声明,也就没有传递进去。同时也证明了global的作用并不是使变量的作用域为全局。

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

当然,除了通过上述方法外,还可以使用全局数组$GLOBALS来解决问题,在需要用到外部变量的地方,使用$GLOBALS['var']就可以了。例:
<?php
$name="even";//定义变量name,并初始化
function echoName()
     {
//通过全局数组$GLOBALS来引用外部变量
echo "myname is ".$GLOBALS['name']."<br>";
}
echoName();
?>
得到的结果为:   myname is even 。
    另外,在使用global和$GLOBALS的时候,要注意大小写问题,如果大小写错误,则关键字就不能起作用。
分享到:
评论

相关推荐

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

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

    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超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析

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

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

    本文通过实例分析了`$GLOBALS`失效的原理,指出直接使用`$GLOBALS`数组总是有效的,提供了参考借鉴价值,并希望本文所述内容能对大家的PHP程序设计有所帮助。在实际的开发工作中,开发者应当根据具体的应用场景和...

    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的使用演示代码

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

    php代码-global

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

    PHP pthreads v3使用中的一些坑和注意点分析

    本文实例讲述了PHP pthreads v3使用中的一些坑和注意点。分享给大家供大家参考,具体如下: 一、子线程无法访问父线程的全局变量,但父线程可以访问子线程的变量 &lt;?php class Task extends Thread { public $...

Global site tag (gtag.js) - Google Analytics