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

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 "$key: $value\n";
    }

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, 函数
, 变量
, server
, 全局
, 超全局数组
globals
php全局变量的用法、c中全局变量的用法、全局变量、python 全局变量、英语数词用法详解,以便于您获取更多的相关知识。

时间: 2024-10-03 02:55:56

php9个超全局变量的用法详解(一)的相关文章

php9个超全局变量的用法详解(二)

今天来讲一下$_GET()与$_POST(). 其实很容易理解,根据表面意思就可以看得出来,是获得post与get表单的数据,其实也正是如此,来点专业的话来讲, $_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值. $_GET 变量用于收集来自 method="get" 的表单中的值.从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制(最多 100 个字符).好,看个例子,上简单登录界面的代码: 登

PHP预定义变量9大超全局数组用法详解_php基础

1.$_SERVER $_SERVER超级全局变量包含由web服务器创建的信息,它提供了服务器和客户配置及当前请求环境的有关信息.根据服务器不同,$_SERVER中的变量值和变量个数会有差别,不过一般都可以找到CGI1.1规范中定义的变量.其中包括: $_SERVER['HTTP_REFERER']; 引导用户到达当前位置的页面的URL : $_SERVER['REMOTE_ADDR']; 客户IP地址 : $_SERVER['REQUEST_URI']; URL的路径部分.如果URL是 [ur

Smarty变量用法详解_php实例

本文实例讲述了Smarty变量用法.分享给大家供大家参考,具体如下: 1. 从PHP分配的变量 调用从PHP分配的变量需在前加"$"符号.(译注:同php一样) 调用模板内的assign函数分配的变量也是这样.(译注:也是用$加变量名来调用) 示例: index.php: $smarty = new Smarty; $smarty->assign('firstname', 'Doug'); $smarty->assign('lastLoginDate', 'January1

PHP Session的生存周期与用法详解

PHP Session的生存周期与用法详解 session 是一种服务器端用于存储有关用户会话信息的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息. 当程序需要为某个客户端的请求创建一个 session 的时候,服务器首先会检查这个客户端是否已经包含了一个 session 标识,这个我们称为 session id(获取方法为 session_id() ),如果已包含一个 session id 则说明此客户端之前已经创建过 session,服务器则按照 session i

c++ 中__declspec 的用法详解_C 语言

c++ 中__declspec 的用法如下,想要了解的继续往下看吧. 语法说明: __declspec ( extended-decl-modifier-seq ) 扩展修饰符: 1:align(#) 用__declspec(align(#))精确控制用户自定数据的对齐方式 ,#是对齐值. e.g __declspec(align(32)) struct Str1{ int a, b, c, d, e; }; 它与#pragma pack()是一对兄弟,前者规定了对齐的最小值,后者规定了对齐的最

C++ Iostreams用法详解(四)缓冲区

在前面说到过每一个iostream对象都有一个缓冲区,我们称之为流缓冲区,那个这个所谓的流缓冲区是怎 么存在的呢?iostreams中将该流缓冲区抽象为一个类,即streambuf类. 每个iostream的类都会包含 一个指向streambuf对象的指针,这也就意味着我们可以直接的去访问到这个指针,并向该streambuf对象发送 消息等(但是一般情况下我们并不需要这样做). 既然说我们可以得到这个指针,那isotreams类当然 会提供访问的接口了,这就是const成员函数rdbuf(),它

C++ Iostreams用法详解(三)状态标志位

iostreams中共有四个状态标志位定义在ios_base中,具体如下: namespace std { class ios_base { public: typedef implementation-defined-bitmask-type iostate; static const iostate badbit; static const iostate eofbit; static const iostate failbit; static const iostate goodbit;

C++ Iostreams用法详解(二)标准输入输出

首先说我们最常用的两个全局对象cin和cout,以下摘自MSDN: You can then extract values from cin or wcin to read the standard input. The rules for doing so are outlined in the description of the class basic_istream Class. You can also insert values to cout or wcout to write t

JDBC日期处理用法详解

JDBC日期处理用法详解,可以作为一个连接JDBC的标准类 package JDBC; import java.sql.Connection; import java.sql.Date; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.DriverManager; import java.sql.Statement; import java.sql.Time; import java.sql.Tim