PHP Global 全局变量
Global是php中一个比较特殊的命令,大家直接叫他超级全局变量。
很不习惯PHP中的变量作用域,PHP中函数变量和全局是完全隔绝的,也就是无法相互访问。
PHP Global变量在实际应用中,会发现有许多问题需要我们不断的去完善处理。
在这篇文章中就针对PHP Global变量出现的问题给出了一些具体的解决办法。
1. PHP Global变量的作用是定义全局变量
但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件
$a = 123;
function aa()
{
Global $a; // 如果不把$a定义为global变量, 函数体内是不能访问$a的
echo $a;
}
aa();
小结
在函数体内定义的PHP Global变量,函数体外可以使用;
在函数体外定义的global变量,不能在函数体内使用。
示例:
$global $a; // 函数体外定义global变量,函数体内不能使用
$a = 123;
function f() {
echo $a; // 错误
}
再看一例
function f()
{
global $a; // 函数体内定义global变量,函数体外可以使用
$a = 123;
}
f();
echo $a; // 正确,可以使用
2 PHP Global 变量的有关问题
问题:在config.inc.php中定义了一些变量($a),在别的文件中函数外部 include("config.inc.php"),函数内部需要使用这些变量$a,如果没有声明的话,echo $a是打印不出来任何东西的。因此声明global $a,但是有很多函数和很多变量,总不能不断重复的这样声明吧?有什么好的解决办法?
解答1:先在config.inc.php里定义常量:define(常量名,常量值),再在其他需要用到的地方require 'config.inc.php',然后就能在这个文件里直接使用这个常量了(推荐)
解答2:定义数组,如$x[a],$x,那样就只要声明global $x一个了(此方法不行)
解答3:改你的php.ini文件。 设置PHP Global变量 为 on
PHP 全局变量global和$GLOBALS[] 区别
$GLOBALS['var']是外部的全局变量本身,global $var是外部$var的同名引用或者指针
一、举例比较
示例1:
<?php
$var1 = 1;
function test() {
unset($GLOBALS['var1']);
}
test();
echo $var1;
?>
因为$var1被删除了,所以什么东西都没有打印。
示例2:
<?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的同名引用或者指针
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2015-03-12 03:43:55
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
转载注明: PHP Global 全局变量 (米扑博客)