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 创建标签云函数代码
May 26 PHP
逆序二维数组插入一元素的php代码
Jun 08 PHP
利用curl 多线程 模拟 并发的详解
Jun 14 PHP
PHP防止post重复提交数据的简单例子
Jun 07 PHP
php获取twitter最新消息的方法
Apr 14 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
PHP简单创建压缩图的方法
Aug 24 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
Dec 29 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
PHP将整数数字转换为罗马数字实例分享
Mar 17 PHP
laravel 实现划分admin和home 模块分组
Oct 15 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+js iframe实现上传头像界面无跳转
2014/04/29 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
设定php简写功能的方法
2019/11/28 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
PHP反射基础知识回顾
2020/09/10 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
python 获取字符串MD5值方法
2018/05/29 Python
Python之列表的插入&amp;替换修改方法
2018/06/28 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
关于母亲节的感言
2014/02/04 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
高中语文课后反思
2014/04/27 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
机关保密工作承诺书
2015/05/04 职场文书
贷款收入证明范本
2015/06/12 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书