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之PHP语法学习笔记1
Dec 17 PHP
利用static实现表格的颜色隔行显示的代码
Sep 02 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
php ios推送(代码)
Jul 01 PHP
ThinkPHP基本的增删查改操作实例教程
Aug 22 PHP
基于PHP如何把汉字转化为拼音
Dec 11 PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 PHP
php 数组字符串搜索array_search技巧
Jul 05 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
php中钩子(hook)的原理与简单应用demo示例
Sep 03 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 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.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
2012/07/01 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
js Math 对象的方法
2013/09/01 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
Python中除法使用的注意事项
2014/08/21 Python
Python批量查询域名是否被注册过
2017/06/21 Python
Python SQLite3数据库日期与时间常见函数用法分析
2017/08/14 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
用python实现对比两张图片的不同
2018/02/05 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
Django Rest framework频率原理与限制
2019/07/26 Python
Django密码存储策略分析
2020/01/09 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
使用python把xmind转换成excel测试用例的实现代码
2020/10/12 Python
python 读取串口数据的示例
2020/11/09 Python
用python发送微信消息
2020/12/21 Python
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
汽车维修工岗位职责
2014/02/12 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
在校实习生求职信
2014/06/18 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
结婚堵门保证书
2015/05/08 职场文书
《法国号》教学反思
2016/02/22 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python