Heim  >  Artikel  >  Backend-Entwicklung  >  php9个超全局变量的用法详解(一)_PHP教程

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

WBOY
WBOYOriginal
2016-07-13 10:42:17765Durchsuche

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; 就可...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn