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的同名引用或者指针