PHP Global定义全局变量使用说明


Posted in PHP onAugust 15, 2013

很不习惯PHP中的变量作用域,PHP中函数变量和全局是完全隔绝的,也就是无法相互访问。
比如下面这样:

$test = 123;
 abc(); //这里什么都不输出,因为访问不到$test变量
function abc(){
    echo($test);
}$test = 123;
abc(); //这里什么都不输出,因为访问不到$test变量
function abc(){
    echo($test);
}

如果,你想在函数内部访问外部变量,你需要这样:
$test = 123;
 abc(); //输出123
function abc(){
    global $test;
    echo($test);
}$test = 123;
abc(); //输出123
function abc(){
    global $test;
    echo($test);
}

但如果我们在函数中定义全局变量呢,像下面这样:
function abc(){
    global $test;
    $test = 123;
}
abc();
echo($test); //输出123function abc(){
 global $test;
 $test = 123;
}
abc();
echo($test);

//输出123通过这种方式,我们可以在外部访问到函数内部定义的变量
在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内(包括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;
}
?>
PHP 相关文章推荐
用PHP和ACCESS写聊天室(五)
Oct 09 PHP
PHP下操作Linux消息队列完成进程间通信的方法
Jul 24 PHP
shopex中集成的站长统计功能的代码简单分析
Aug 11 PHP
php读取富文本的时p标签会出现红线是怎么回事
May 13 PHP
教你如何用php实现LOL数据远程获取
Jun 10 PHP
php判断访问IP的方法
Jun 19 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
php 截取utf-8格式的字符串实例代码
Oct 30 PHP
PHP中字符串长度的截取用法示例
Jan 12 PHP
PHP新特性详解之命名空间、性状与生成器
Jul 18 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
深入解析PHP底层机制及相关原理
Dec 11 PHP
php生成图形验证码几种方法小结
Aug 15 #PHP
PHP中将ip地址转成十进制数的两种实用方法
Aug 15 #PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 #PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
Aug 13 #PHP
php使用sql数据库 获取字段问题介绍
Aug 12 #PHP
完美解决PHP中的Cannot modify header information 问题
Aug 12 #PHP
php 下载保存文件保存到本地的两种实现方法
Aug 12 #PHP
You might like
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
杏林同学录(二)
2006/10/09 PHP
新手学PHP之数据库操作详解及乱码解决!
2007/01/02 PHP
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
nodejs中各种加密算法的实现详解
2019/07/11 NodeJs
基于python编写的微博应用
2014/10/17 Python
探究Python中isalnum()方法的使用
2015/05/18 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
python如何统计代码运行的时长
2019/07/24 Python
Django ORM 自定义 char 类型字段解析
2019/08/09 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
园林施工员岗位职责
2013/12/11 职场文书
简历自我评价模版
2014/01/31 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
银行授权委托书格式
2014/10/10 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
2021/07/01 Java/Android
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript
python程序的组织结构详解
2021/12/06 Python