当前位置:首页 > Web开发 > 正文

$foo="Example content";test();function test(){ $foo="local

2024-03-31 Web开发

PHP中$GLOBALS和global都可以实现全局变量的成果,所以很多人都认为global和$GLOBALS[]只是写法上面的分歧,其实不然。$GLOBALS 是一个超级全局变量,其实是一个数组,而global 则是一个声明全局变量的关键字!

一、超全局变量$GLOBALS

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

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

官方说明:

$GLOBALS — 引用全局感化域中可用的全部变量。

一个包罗了全部变量的全局组合数组。变量的名字就是数组的键。

即呈现过的全局变量,就可以通过$GLOBALS这个数组取得。

$GLOBALS[‘var‘] 是外部的全局变量$var自己。

global $var 是外部$var的同名引用或者指针。(错误:是个别号引用而已,非指针!!!)

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呢?再改削一下例子:

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";

执行功效只输入一个2;

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在函数内部访谒函数外面界说的变量。

$codetc=‘out‘; function ff(){ echo $GLOBALS[‘codetc‘]; } ff();

直接在函数内部使用$codetc是会堕落的。

总结

以上就是这篇文章的全部内容了,但愿本文的内容对大家的学习或者事情具有必然的参考学习价值,感谢大家对敏而好学论坛/嗨学网的撑持。如果你想了解更多相关内容请检察下面相关链接

原文地点是:

PHP中$GLOBALS与global的区别详解_php技巧 - PHP

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/33153.html