Home > Backend Development > PHP Tutorial > PHP中global与¥GLOBALS[]差别

PHP中global与¥GLOBALS[]差别

WBOY
Release: 2016-06-13 10:32:35
Original
904 people have browsed it

PHP中global与¥GLOBALS[]区别

开发一个PHP程序,不可避免的要使用到全局数据.

全局变量便是其中之一,当然这个观点颇具争议,有许多人还是建议禁用全局变量,使用不当对造成程序的可读性很差!结构混乱,调试更是一头雾水,但是不可否认他的便捷,这便是php为什么会用全局变量global原因吧!…

今天就遇到了php 全局变量不起作用的问题.

先上一段简单的代码:

1 <?php
2 $a = 0 ;
3 function Test()
4 {
5 $a =1;
6 }
7 Test();
8 echo $a;
9 ?>

上面的代码中输出是0,那是因为函数体Test内$a变量被缺省设置为局部变量,$a的作用域就是在Test内.修改代码如下

01 <?php
02 $a = 0 ;
03 function Test()
04 {
05  global$a;//申明函数体Test内使用的$a变量为global全局变量
06  $a=1;
07 }
08 Test();
09 echo $a;
10 ?>

申明函数体Test内使用的$a变量为global全局变量后,使得$a的作用全局,所以输出为1.
上面的实例只是基本的global全局变量知识,下面我们看看复杂点的:

01 //A.php 文件
02  
03 <?php
04 function Test_Global()
05 {  
06 include 'B.php';  
07 Test();  
08 }  
09  
10 $a = 0 ;
11 Test_Global();
12 echo $a;
13 ?> 
14  
15 //B.php 文件
16  
17 <?php
18 function Test()
19 {
20  global$a;//申明函数体Sum内使用的$a变量为global全局变量
21  $a=1;
22 }
23 ?>

为什么输出的却是0?!!

在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内(包括include 和 require 导入的文件内的变量)!
解释:A.php文件的内Test_Global是定义好的第三方函数,该函数用include导入了B.php文件内的$a的global全局变量,所以$a被限制在Test_Global局部函数范围内,所以B.php文件内的$a的作用范围都在Test_Global内,而不是作用了整个A.php内….

解决方案:

1. 冲出局部函数

01  //A.php 文件
02  
03 <?php
04 function Test_Global()
05 {  
06 Test();  
07 }  
08 include 'B.php';  //将include 从局部Test_Global函数中移出
09 $a = 0 ;
10 Test_Global();
11 echo $a;
12 ?> 
13  
14 //B.php 文件
15  
16 <?php
17 function Test()
18 {
19  global$a;
20  $a=1;
21 }
22  ?>

2.优秀的访问器

1  //A.php 文件
01 <?php
02 include 'B.php'
03 $a =0;
04 Set_Global($a);
05 echo $a;
06 ?> 
07  
08 //B.php 文件
09  
10 <?php
11 function Set_Global(&$var)
12 {
13    $var=1;
14 }
15  ?>
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template