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新手上路(二)
Oct 09 PHP
随时给自己贴的图片加文字的php代码
Mar 08 PHP
PHP XML备份Mysql数据库
May 27 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
php获取URL中带#号等特殊符号参数的解决方法
Sep 02 PHP
thinkPHP实现表单自动验证
Dec 24 PHP
php面向对象中static静态属性与方法的内存位置分析
Feb 08 PHP
PHP安装memcached扩展笔记
May 28 PHP
PHP使用array_merge重新排列数组下标的方法
Jul 22 PHP
windows8.1下Apache+Php+MySQL配置步骤
Oct 30 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 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
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
2015/08/27 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
jQuery 事件队列调整方法
2009/09/18 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
浅析javascript中函数声明和函数表达式的区别
2015/02/15 Javascript
js实现多图左右切换功能
2016/08/04 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
python super函数使用方法详解
2020/02/14 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
阻止移动设备(手机、pad)浏览器双击放大网页的方法
2014/06/03 HTML / CSS
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
美国踏板车和轻便摩托车销售网站:Mega Motor Madness
2020/02/26 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
金士达面试非笔试
2012/03/14 面试题
中专生学习生活的自我评价分享
2013/10/27 职场文书
气象学专业个人求职信
2014/04/22 职场文书
郭明义观后感
2015/06/08 职场文书
单位工资证明范本
2015/06/12 职场文书
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js