PHP中全局变量global详解
发布:smiling 来源: PHP粉丝网 添加日期:2014-03-13 13:41:15 浏览: 评论:0
本文章来详细的介绍关于PHP中全局变量global的方法,有需要了解global函数使用方法的朋友可参考本文章.
变量的范围即它定义的上下文背景(也就是它的生效范围).大部分的 PHP 变量只有一个单独的范围.这个单独的范围跨度同样包含了 include 和 require 引入的文件.
实例代码如下:
- <?php
- $a = 1;
- include 'b.inc';
- ?>
这里变量 $a 将会在包含文件 b.inc 中生效.但是,在用户自定义函数中,一个局部函数范围将被引入.任何用于函数内部的变量按缺省情况将被限制在局部函数范围内.例如:
实例代码如下:
- <?php
- $a = 1; /* global scope */
- function Test()
- {
- echo $a; /* reference to local scope variable */
- }
- Test();
- ?>
这个脚本不会有任何输出,因为 echo 语句引用了一个局部版本的变量 $a,而且在这个范围内,它并没有被赋值.你可能注意到 PHP 的全局变量和 C 语言有一点点不同,在 C 语言中,全局变量在函数中自动生效,除非被局部变量覆盖.这可能引起一些问题,有些人可能不小心就改变了一个全局变量.PHP 中全局变量在函数中使用时必须申明为global.
今天就遇到了php 全局变量不起作用的问题.先上一段简单的代码:
实例代码如下:
- <?php
- $a = 0 ;
- function Test()
- {
- $a =1;
- }
- Test();
- echo $a;
- ?>
上面的代码中输出是0,那是因为函数体Test内$a变量被缺省设置为局部变量,$a的作用域就是在Test内.修改代码如下
实例代码如下:
- <?php
- $a = 0 ;
- function Test()
- {
- global $a;//申明函数体Test内使用的$a变量为global全局变量
- $a =1;
- }
- Test();
- echo $a;
- ?>
申明函数体Test内使用的$a变量为global全局变量后,使得$a的作用全局,所以输出为1.
上面的实例只是基本的global全局变量知识,下面我们看看复杂点的:
//A.php 文件
实例代码如下:
- <?php
- function Test_Global()
- {
- include 'B.php';
- Test();
- }
- $a = 0 ;
- Test_Global();
- echo $a;
- ?>
- //B.php 文件
- <?php
- function Test()
- {
- global $a;//申明函数体Sum内使用的$a变量为global全局变量
- $a =1;
- }
- ?>
为什么输出的却是0?!!
在用户自定义函数中,一个局部函数范围将被引入.任何用于函数内部的变量按缺省情况将被限制在局部函数范围内(包括include 和 require 导入的文件内的变量)!
解释:A.php文件的内Test_Global是定义好的第三方函数,该函数用include导入了B.php文件内的$a的global全局变量,所以$a被限制在Test_Global局部函数范围内,所以B.php文件内的$a的作用范围都在Test_Global内,而不是作用了整个A.php内….
解决方案:
1. 冲出局部函数
实例代码如下:
- //A.php 文件
- <?php
- function Test_Global()
- {
- Test();
- }
- include 'B.php'; //将include 从局部Test_Global函数中移出
- $a = 0 ;
- Test_Global();
- echo $a;
- ?>
- //B.php 文件
- <?php
- function Test()
- {
- global $a;
- $a =1;
- }
- ?>
2.优秀的访问器
实例代码如下:
- //A.php 文件
- <?php
- include 'B.php';
- $a =0;
- Set_Global($a);
- echo $a;
- ?>
- //B.php 文件
- <?php
- function Set_Global(&$var)
- {
- $var=1;
- }
- ?>
Tags: global include require
- 上一篇:PHP5类中的属性与类方法
- 下一篇:php分割字符串并循环输出
相关文章
- ·PHP中全局变量global和$GLOBALS[]的区别(2013-12-02)
- ·php 全局变量global的使用方法(2013-12-23)
- ·PHP中global全局变量的作用范围(2014-01-06)
- ·PHP Global变量定义一些用法详解(2014-01-17)
- ·PHP基础笔记函数global变量(2014-02-10)
- ·PHP Global与$GLOBALS变量作用域与区别(2014-02-26)
- ·PHP 全局变量之Global关键字引用解读(2014-03-06)
- ·php中global static和$GLOBALS使用与区别(2014-03-13)
- ·php中global和$GLOBALS[]用法区别(2014-03-21)
- ·PHP Global定义全局变量使用说明(2014-07-17)
- ·php中global和static两个关键字详解(2014-07-30)
- ·PHP register_globals自定义全局变量开启(2015-04-08)
- ·php多次include后导致全局变量global失效的解决方法(2021-05-14)
- ·PHP 闭包获取外部变量和global关键字声明变量的区别讲解(2021-08-22)
- ·PHP中$GLOBALS与global的区别详解(2021-11-13)
- ·PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】(2021-12-04)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)