PHP中超全局变量$GLOBALS和global的用法

PHP中 global 和 $_GLOBAL 全局变量的区别 阅读目录1 global 变量名2 $GLOBALS 变量名总结 1 global 变量名 示例代码如下: <?php // 显示上个月 2018-05-21 $lastMonth = strtotime("2018-06-21 -1 month"); function last_month(){ // 函数内部访问外部变量 global $lastMonth; echo date("Y-m-d",$lastMonth); } // 调用执行PHP脚本 last_month(); // 2 阅读详情

一、超全局变量$GLOBALS

PHP超全局变量有很多,如下的都属于超全局变量(Superglobal):

$GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV。

官方说明:

  • $GLOBALS — 引用全局作用域中可用的全部变量。
  • 一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
  • 即出现过的全局变量,就可以通过$GLOBALS这个数组取得。
  • PHP生命周期中,定义在函数体外部的所谓全局变量,函数内部是不能直接获得的。
复制代码
$foo = "Example content";
test();
function test() {
    $foo = "local variable";
    echo '$foo in current scope: ' . $foo . "<br>";
    echo '$foo in global scope: ' . $GLOBALS["foo"] . "<br>";
}
复制代码

如上的例子,要访问外部的$foo必须使用 $GLOBALS数组。对于通过include文件进来的外部全局变量也适用。

php中global也有这样的功能,它和$GLOBALS的区别在于:

  • global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量。
  • $GLOBALS[]确确实实调用是外部的变量,函数内外会始终保持一致。

对于类中的成员变量,类中函数必须使用$this->的方式访问,不能用$GLOBALS方式:

global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。


二、实例讲解

复制代码
function t1() {
    global $var1, $var2;
    $var2 = &$var1;
}
function t2() {
    $GLOBALS['var3'] = &$GLOBALS['var1'];
}
$var1 = 5;
$var2 = $var3 = 0;
t1();
print $var2 ."\n";
t2();
print $var3 ."\n";
复制代码

执行结果为:
0
5

为什么不是2个5而是1个0和1个5呢?

global就是外部变量的同名引用,变量本身的作用范围仍然在函数体内。改变这些变量的值,外部的同名变量自然也改变。但一旦用了&,那么变量将不再是同名引用。
再修改一下例子:

复制代码
function t1() {
    global $var1;
    $var1 = 2;
    unset($var1);
}
function t2() {
    $GLOBALS['var1'] = 3;
    unset($GLOBALS['var1']);
}
$var1 = 1;
t1();
print $var1 . "\n";
t2();
print $var1 . "\n";

$var1 = 1;    
$var2 = 2;    
function test_global()    
{    
    global $var1,$var2;    
    $var1=&$var2;    
    $var1=7;    
}
test_global();    
echo $var1;    
echo $var2;
复制代码

执行结果输入217;

1、$GLOBALS是由所有已定义全局变量自动形成的数组。变量名就是该数组的索引。即$GLOBALS['var1']与函数外部的变量$var1是同一个变量,所以将$GLOBALS['var1'] 删除后,该变量已不存在,所有无法输出了。
注:$GLOBALS是自动全局变量。这意味着它在所有的脚本中都有效。在函数或方法中不需要使用 global $GLOBALS; 来访问它。

2、"global $var1;"是产生了函数外部$var1的别名变量"$var1",它不是真正的函数外部变量,他只存在于函数的内部,所以即使在函数内将别名变量删除也不会影响外面的变量,但是可以修改函数外部变量的值。

或许有的人总想知道这个或那个的区别:在php程序,包括其他程序的学习中,自己动手实验,根据结果加上的思考,有的时候比上网查找可能会来得更快一些,更准确一些。下面我们来讲一下,php在全局范围内访问变量要怎么办?
例一:global定义全局变量。

复制代码
function test_global() {
    global $var1;
    $var1 = 'ok';
    unset($var1);
}
test_global();
$var2 = &$var1;
unset($var1);
echo $var2;
复制代码

先不给出结果,自己运行一下程序。函数内部的变量可以访问到了。从结果可以看出,unset只是断开变量名与变量值连接,并没有马上销毁变量的值,而且在函数内部定义的全局变量,实际在外部只是使用了函数内部的别名而已,所以我们在外面依然可以访问$var1。

例二:$GLOBALS在函数内部访问函数外面定义的变量。

$waibu = 'out';
function ff() {
    echo $GLOBALS['waibu'];
}
ff();

直接在函数内部使用$waibu是会出错的。

转载:http://www.phptd.com/?action-viewnews-itemid-6147

对原文做了写小修改

PHP中的全局变量global和$GLOBALS的区别及使用 在PHP编程中,我们经常需要在不同的函数或作用域中访问和修改同一个变量。它提供了一种访问全局变量的便捷方式,特别适用于需要在多个函数中访问全局变量的情况。它们都提供了在不同作用域中访问和修改全局变量的机制,但使用的方式有所不同。而如果需要在函数内外都能访问全局变量,或者需要在多个函数中访问同一个全局变量,使用。它只能在函数内部使用,而不能在函数外部使用。超全局变量,我们可以直接在函数内部访问全局变量,而不需要使用。关键字,我们可以在函数内部访问和操作全局变量。的值,并在函数中打印了它的值。 阅读详情

相关推荐

LMI线性矩阵不等式之非线性变量处理

​ 如果一个LMI线性矩阵不等式中的某项存在两个矩阵变量相乘,那么称该类情形为非线性矩阵不等式,而要直接求解时很困难的,而且LMI工具箱也无法求解非线性矩阵,所以需要通过变量替换法进行处理。 ​...

Mr.邹的博客 4549

php全局变量global

简介 Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。 例子   但是在函数体内定义的global变量,函数体内可以使用,在函数体外定义的global变量不能在函数体内使用,具体看下面示例。 (1)在函数体内定义global变量,函数体内可以使用。 $a=123; funct

不求前途凶吉,但求落幕无悔! 846

python如何实现点云可视化交互——Open3D实例教程(获取所选点的信息)保姆级教学

python如何实现点云可视化交互——Open3D实例教程(获取所选点的信息)保姆级教学

qq_45912037的博客 1万+

php globals_PHP $ GLOBALS(超级全局变量),带有示例

php globals PHP $全球 (PHP $GLOBALS) PHP $GLOBALS is the only superglobal that does not begin with an underscore (_). It is an array that stores all the global scope variables. PHP $ GLOBALS是唯一不以下划线( _...

cumtb2002的博客 2359

[kriging](一)网上下载的kriging克里金的C++程序的初步调试

笔者在网上下载了一份克里金的C++程序,水平有限,正在逐步地调试中。 初步 克里金法现在在许多软件都已经有集成了,据笔者所知: arcgis : 看过有的arcgis培训视频里面简略介绍了里面的插值方法,有克里金。 surfer :笔者用过这个,效果很好。 gocad :听说有 landmark &jason :研究生时候用的专业的石油物探软件,里面有克里金法,万恶的开始。 pykrig...

FOREST优快云 5610

工业质检新利器:手把手教你用AD-DINOv3实现零样本缺陷检测(附MVTec AD实战)

本文详细介绍了AD-DINOv3框架在工业质检中的应用,通过零样本异常检测技术解决传统方法的标注成本高和泛化能力弱问题。文章包含技术原理解析、MVTec AD数据集实战部署、模型训练流程及工业部署优化技巧,帮助读者快速掌握这一创新技术。

seed的博客 763

PHP 超级全局变量

PHP 超级全局变量 PHP系统中自带的变量,在一个脚本的全部作用域中都可用。 PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 不需要特别说明就可以在函数及类中使用。

Fancie's Blog 1217

SNAP实战:哨兵1 SLC数据预处理全流程详解(附避坑指南)

本文详细解析了使用SNAP软件处理哨兵1号SLC数据的完整预处理流程。从轨道精校正、辐射定标到多视与斑点滤波,再到地理编码,文章提供了清晰的操作步骤与核心逻辑,并重点分享了实践中的常见“坑”与解决方案,旨在帮助用户高效、准确地完成SAR数据预处理。

7up55的博客 1026

PHP: 关键字global 和 超全局变量$GLOBALS的用法、解释、区别

$GLOBALS 是一个关联数组,每一个变量为一个元素,键名对应变量名,值对应变量的内容。$GLOBALS 之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量。 php语法中,很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然 根据官方的解释是 1. $GLOBALS['var']是外部的全局变量本身2. global $var是外部$v...

Just Code 658

Python调用CANoe(1)(启动与停止,变量和信号读写)

CANoe因为其封闭性(Vector独有),开发的时候,有很多局限性;Python 因为其开源,容易上手,功能强大,那么Python 和 CANoe结合会产生怎样的火花呢?

蚂蚁小兵 4万+

出现 Tomcat:HTTP状态 404 - 未找到解决方法(图文分析)

出现如下问题 HTTP状态 404 - 未找到 类型 状态报告 消息 请求的资源[/ajax_war_exploded/]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。 Apache Tomcat/8.5.69 解决方法如下: 网上中的操作有步操作多数都误导 这个部署的环境目录上面是web.xml 下面的目录路径是web即可不用到webapp 保存重启服务器即可使用 其他配置中启动tomcat的操作具体 JRE 1.8 ...

码农研究僧的博客 13万+

php中is_array,php is_array和in_array,全局变量

php这门语言是函数为主,所以理解了php的函数就是理解了php的一大半了。is_array()顾名思义:判断变量的类型是否是数组类型的。语法:is_array(mixed var),是蛮简单的一个函数。类似的函数:is_float(), is_double(), is_int(), is_integer(), is_long(), is_string(), is_object(), is_rea...

weixin_29516131的博客 489

基于FPGA的超声成像算法的硬件设计

顶层设计如下图: 1. Verilog的硬件设计型号是 ALTERA 2.数据的输入量已经给出,附上的四个矩阵输入都要实现。 3.波束形成部分要在FPGA上完成,最后的matlab的代码部分只是获取数据后的图像显示 4.不需要动态聚焦,只是完成固定的四个不同输入数据的显示即可 5.不需要实物,但要实现硬件的仿真,要有相应的模块图和结构图,类似如下 具体实现过程和最终结果如下: 定义aperture(孔径)大小————输入量,数据已给出,一共四个规格的ape...

FPGA/MATLAB学习教程/源码/项目合作开发 1万+

PHP的超全局变量$GLOBALS,以後可以不用再使用Global了

在全局范围内访问变量除了使用Global之外還有另外一个办法,是用特殊的 PHP $GLOBALS 数组。前面的看下邊的例子:使用 $GLOBALS 替代 global$A = "This ";$GLOBALS['B']="is ";Function Sum(){    Echo $GLOBALS['A'],$GLOBALS['B'],'';    $GLOBALS['C']=$GLOBALS['

Let's Go! 969

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

php如何定义变量,它和c# 等语言有什么不同呢?,PHP 变量和常量的定义

本章说说变量的定义。如果对于变量和常量的定义,你会注意几个方面呢?你可能会想到:如何定义变量,它和C# 等语言有什么不同呢?变量区分大小写吗?PHP的变量还有其他重要的吗?常量和变量的定义一样吗?分别讲述吧。1.如何定义变量,它和C# 等语言有什么不同呢?PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。例如:;$VAR='Kimi;echo"$var,$VAR";//输出...

weixin_35900668的博客 422

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

PHP超全局变量$GLOBALS和global关键字

内容简介变量与作用域global关键字超全局变量$GLOBALS 变量与作用域 php的变量分为三类:局部变量,全局变量,静态变量 同样php的作用域分为三类:1、local(局部作用域) 2、global(全局作用域) 3、static(静态作用域) local和global作用域 通常情况local和global作用域是容易混淆的,如何区分这两种作用域呢?规则如下: 1、函数外部声明的变量拥有全局作用域,只能在函数外部访问。 2、函数内部声明的变量拥有局部作用域,只能在函数内部访问。 PHP生命周期中,

qiuxuemei915的专栏 449

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

php 中global关键字和$GLOBALS用法

首先我们先看一段代码 <?php $a = 1 ; /* global scope */ function Test () { echo $a ; /* reference to local scope variable */ } Test (); ?> 这个脚本不会有任何输出,因为 echo 语句引用了一个局部版本的变量 $a ,而且在这个范围内,它并没有被赋...

weixin_38112233的博客 1220

php的globle超全局变量,php中全局变量global和超全局变量$GLOBALS

php中全局变量global和超全局变量$GLOBALS1.globalGlobal的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。但是在函数体内定义的global变量,函数体内可以使用,在函数体外定义的global变量不能在函数体内使用,具体看下面示例。(1)在函数体内定义global变量,函数体内可以使用。 $a=12...

weixin_40000999的博客 845

PHP $GLOBALS超全局变量分析

php中有一个不为很多人所用的超全局变量$GLOBALS。合理使用这个变量能使工作变得更加有效率,本篇文章主要分析一下这个超全局变量的用法以及$GLOBALS和global的区别。 $GLOBALS定义:引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组。变量的名字就是数组的键),与所有其他超全局变量不同,$GLOBALS在PHP代码中任何地方总是可用的,自己可以通过打印$GLOBA...

qq_29704567的博客 421

PHP中global关键字和$GLOBALS用法

&lt;?php$a  =  1;  /* global scope */function  Test(){    echo  $a ;  /* reference to local scope variable */}Test ();?&gt; 这个脚本不会有任何输出,因为 echo 语句引用...

qq_35617617的博客 1208

php中global和$GLOBALS

PHP变量介绍 php中变量分三类:局部变量,全局变量,超全局变量 局部变量:在函数内部声明的变量 全局变量,在函数外部声明的变量 超全局变量:系统定义的变量,在任何地方都可以直接调用 超全局变量 超全局变量 描述 $_GET 主要用来获取HTTP GET方式传递的数据 $_POST 主要用来获取HTTP POST方式传递的数据 $_REQUEST 只要用来获取GET...

qq_42216575的博客 785

php $globals的用法,php 中global关键字和$GLOBALS用法

首先我们先看一段代码

weixin_35766308的博客 589

关于php中的超全局变量$GLOBALS

<br />测试待的参数http://localhost/test/global.php?ab=aaaaaaaaaaa&bn=xxxxxxxx<br /> <br /> <br /> <?php $aaa="aaa"; $bbb = "bbb"; $ccc = "ccc"; global $bbb,$ccc; print_r($GLOBALS); echo "</br></br></br></br>"; print_r($_REQUEST); ?> <br />输出结果如下:<

zc2087的专栏 1885

php超全局变量的区别,PHP中超全局变量$GLOBALS和global的区别

本篇文章分享一下关于PHP中的超全局变量$GLOBALS和global的区别。一、超全局变量$GLOBALSPHP超全局变量有很多,如下的都属于超全局变量(Superglobal):$GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV。官方说明:$GLOBALS — 引用全局作用域中可用的全部变量。一个包...

weixin_39732316的博客 153

php global与$GLOBALS详解

global的用法 global定义全局变量,不是应用于整个网站,仅仅是应用于当前页面。 函数体外用global关键字定义变量,函数体内无法使用到该变量。函数体内使用global关键字定义变量,则可实现函数内可以不需要传参就可以访问到该变量,函数体内的变量等同于函数体外变量的同名引用例如: //global 关键字函数外定义变量 global只能定义变量,不能同时进行变量初始化 // global...

weixin_39312719的博客 573

PHP全局变量global和$GLOBALS详解

变量的范围即它定义的上下文背景(也就是它的生效范围)。大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。 $a = 1; include 'b.php'; 这里变量 $a 将会在包含文件 b.inc 中生效。但是,在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。例如...

Kano_W的博客 2422
上一篇: mysql left( right ) join使用on 与where 筛选的差异
下一篇: 给window.onload事件赋不同的参数,执行顺序不一样哦!
ECHOutopia
博客等级 码龄14年 11粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值