PHP中全局变量global和$GLOBALS[]的区别分析

yipeiwu_com5年前PHP代码库
一、举例比较
例一:
复制代码 代码如下:

<?php
$var1 = 1;
function test(){
unset($GLOBALS['var1']);
}
test();
echo $var1;
?>

因为$var1被删除了,所以什么东西都没有打印。
例二:
复制代码 代码如下:

<?php
$var1 = 1;
function test(){
global $var1;
unset($var1);
}
test();
echo $var1;
?>

意外的打印了1。证明删除的只是别名引用,其本身的值没有受到任何的改变。

二、解释
global $var其实就是&$GLOBALS['var'],调用外部变量的一个别名而已。
上面代码中的$var1和$GLOBALS['var1']是指的同一变量,而不是两个不同的变量。
PHP的全局变量和C语言有一点点不同。在C语言中,全局变量在函数中主动生效,除非被局部变量笼罩。这可能引起一些问题,有些人可能漫不经心的转变一个全局变量。PHP中全局变量在函数中应用时必须用global申明为全局。
PHP的Global变量的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。

三、结论
1.$GLOBALS['var']是外部的全局变量本身
2.global $var是外部$var的同名引用或者指针。

相关文章

php检测url是否存在的方法

本文实例讲述了php检测url是否存在的方法。分享给大家供大家参考。具体如下: 复制代码 代码如下:function url_exists($url) {   &nb...

全面解读PHP的人气开发框架Laravel

Laravel的主要技术特点: 1、Bundle是Laravel的扩展包组织形式或称呼。Laravel的扩展包仓库已经相当成熟了,可以很容易的帮你把扩展包(bundle)安装到你的应用中...

php数组指针操作详解

数组指针的操作: 移动数组指针的操作: Next() 向下 同时会获得当前元素的值。 Prev() 向上同时会获得当前元素的值。 End() 移动到最后一个元素单元 获得最后一个元素的值...

PHP+JS实现批量删除数据功能示例

本文实例讲述了PHP+JS实现批量删除数据功能。分享给大家供大家参考,具体如下: 表单 <form id="form2" name="form2" method="post"...

Laravel 5.3 学习笔记之 配置

1、简介 Laravel 的所有配置文件都存放在 config 目录下,每个配置项都有注释,以保证浏览任意配置文件的配置项都能直观了解该配置项的作用及用法。 2、访问配置值 你可以使...