首页  >  文章  >  后端开发  >  php9个超全局变量的用法详解(一)_PHP教程

php9个超全局变量的用法详解(一)_PHP教程

WBOY
WBOY原创
2016-07-13 10:42:17768浏览

PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

这些超全局变量是:

  • $GLOBALS
  • $_SERVER
  • $_GET
  • $_POST
  • $_FILES
  • $_COOKIE
  • $_SESSION
  • $_REQUEST
  • $_ENV 1.先看一下$GLOBALS,它是包含了全部变量的全局组合数组,什么意思呢,看一个c语言程序
    int main()
    {
          int a = 3;
          void t()
         {
         printf("%d",a);
         }
         t();
         return 0;
    }


    这个程序运行出来肯定是输出a,很容易理解的吗,在t()函数里将a变量输出 。但看一下php的一个程序:

    <?php
    
    $a = 3;
    function t(){
    echo $a;
    }
    t();
    ?>


    这个会输出的是3吗?no,no,no那就太天真了,它是什么都输出不来的,why???很简单,因为$a不是全局变量,t()函数里面区不到它的值,哇~世界黑暗了,怎么办??别紧张啦,这个时候就需要我们的$GLOBALS出场了,刚才我说的它是包含了全部变量的全局组合数组可能大家没听懂,现在说就应该清楚多了,也就是说通过$GLOBALS就可以在t()函数里取到$a的值,方法$GLOBAL['$A'],试一下将t()函数内容改成function t(){
    echo $GLOBALS['a'];
    }运行一下,页面上就会清晰的显示出$a的值啦。再说一下$GLOBAL的范围,在你当前页面和当前页面require和include 进来的页面里的值它都可以取到。还算厉害吧。当然了,也不是万能的,再看一下这个
    <?php
    $a = 5;
    function t(){
    $b = 2;
    }
    function w()
    {
    echo $GLOBALS['b'];
    echo $GLOBALS['a'];
    }
    t();
    w();
    ?>

    输出什么呢???答案是只有5,也就是说$GLOBALS是不能取到其它函数里面的值的。

    再看第二个$_SERVER,$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。从$_SERVER里面可以提取很多有用的信息,比如$_SERVER['REMOTE_ADDR']可以得到当前用户的ip,下面我用foreach遍历整个$_SERVER数组,将其打印。代码如下:

    <?php
    foreach($_SERVER as $key => $value){
    echo "<b>$key:</b> $value<br>\n";
    }


    想要看效果又不想或者现在不能写的可以看这个网址,这是sae服务器server的效果。http://5253.sinaapp.com/blog/server.php我将它上传到这里了。

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/664281.htmlTechArticlePHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可...
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn