PHP 中global 和$GLOBALS[]的使用和区别
Php代码
这里变量 $a 将会在包含文件 b.inc 中生效。但是,在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。例如:
Php代码
这个脚本不会有任何输出,因为 echo 语句引用了一个局部版本的变量 $a,而且在这个范围内,它并没有被赋值。你可能注意到 PHP 的全局变量和 C 语言有一点点不同,在 C 语言中,全局变量在函数中自动生效,除非被局部变量覆盖。这可能引起一些问题,有些人可能不小心就改变了一个全局变量。PHP 中全局变量在函数中使用时必须声明为 global。
global 关键字
首先,一个使用 global 的例子:
Example #1 使用 global
Php代码
以上脚本的输出将是“3”。在函数中声明了全局变量 $a 和 $b 之后,对任一变量的所有引用都会指向其全局版本。对于一个函数能够声明的全局变量的最大个数,PHP 没有限制。
在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。前面的例子可以写成:
Example #2 使用 $GLOBALS 替代 global
Php代码
$GLOBALS 是一个关联数组,每一个变量为一个元素,键名对应变量名,值对应变量的内容。$GLOBALS 之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量。以下范例显示了超全局变量的用处:
Example #3 演示超全局变量和作用域的例子
Php代码
global和$GLOBALS[]区别
$GLOBALS['var']是外部的全局变量本身,global $var是外部$var的同名引用或者指针
Php代码
结果:Notice: Undefined variable: var1 。因为变量var1被unset函数删除了。
Php代码
结果:打印 1
删除的只是别名引用,其本身的值没有受到任何的改变。
global $var其实就是&$GLOBALS['var'],调用外部变量的一个别名而已。
上面代码中的$var1和$GLOBALS['var1']是指的同一变量的本身。
PHP的global变量的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。
结论:
1.$GLOBALS['var']是外部的全局变量本身
2.global $var是外部$var的同名引用或者指针。
推荐阅读
-
php中require和require_once的区别说明_PHP
-
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
-
php中str_replace跟str_ireplace的用法和区别
-
详解php的魔术方法__get()和__set()使用介绍_PHP教程
-
PHP中Session会话的使用和分析
-
php下intval()和(int)转换使用与区别
-
PHP中include和require的区别详解,includerequire
-
MySQL存储引擎中的MyISAM和InnoDB区别详解_MySQL
-
PHP编程中的常见漏洞和代码实例
-
PHP函数级分层性能分析工具xhprof的安装和使用方法