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 相关文章推荐
模拟OICQ的实现思路和核心程序(一)
Oct 09 PHP
php5.2时间相差8小时
Jan 15 PHP
php 三维饼图的实现代码
Sep 28 PHP
PHP MemCached高级缓存配置图文教程
Aug 05 PHP
基于php设计模式中工厂模式详细介绍
May 15 PHP
thinkphp控制器调度使用示例
Feb 24 PHP
php自定义urlencode,urldecode函数实例
Mar 24 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
php伪静态验证码不显示的解决方案
Sep 26 PHP
TP5框架实现的数据库备份功能示例
Apr 05 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 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编程效率的方法
2013/11/07 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
PHP实现的日历功能示例
2018/09/01 PHP
强制设为首页代码
2006/06/19 Javascript
Javascript 陷阱 window全局对象
2008/11/26 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python中global用法实例分析
2015/04/30 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
python判断一个数是否能被另一个整数整除的实例
2018/12/12 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
亚马逊墨西哥站:Amazon.com.mx
2018/08/26 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
.NET现在共支持多少种语言
2014/02/26 面试题
Java软件工程师综合面试题笔试题
2013/09/08 面试题
上班迟到检讨书
2014/01/10 职场文书
技能比赛获奖感言
2014/02/14 职场文书
军校大学生个人的自我评价
2014/02/17 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
学生实习证明范文
2014/09/28 职场文书
返乡农民工证明
2015/06/24 职场文书
预备党员入党感想
2015/08/10 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书