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实现图片等比例放大和缩小的方法详解
Jun 06 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
深入解析phpCB批量转换的代码示例
Jun 27 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
Aug 10 PHP
PHP按行读取文件时删除换行符的3种方法
May 04 PHP
ThinkPHP控制器间实现相互调用的方法
Oct 31 PHP
非常实用的PHP常用函数汇总
Dec 17 PHP
CodeIgniter钩子用法实例详解
Jan 20 PHP
关于laravel 子查询 &amp; join的使用
Oct 16 PHP
PHP查找一列有序数组是否包含某值的方法
Feb 07 PHP
YII2框架使用控制台命令的方法分析
Mar 18 PHP
PHP7修改的函数
Mar 09 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的ajax框架xajax入门与试用介绍
2010/12/19 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
JavaScript 参考教程
2006/12/29 Javascript
js身份证验证超强脚本
2008/10/26 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
详解Python的Django框架中的templates设置
2015/05/11 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
中国网上药店领导者:1药网
2017/02/16 全球购物
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
运动会领导邀请函
2014/02/05 职场文书
揭牌仪式主持词
2014/03/19 职场文书
音乐教师求职信
2014/06/28 职场文书
义卖募捐活动总结
2015/05/09 职场文书
工商行政处罚决定书
2015/06/24 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
mysql函数之截取字符串的实现
2022/08/14 MySQL