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 相关文章推荐
Optimizer与Debugger兼容性问题的解决方法
Dec 01 PHP
php split汉字
Jun 05 PHP
php 图片上传类代码
Jul 17 PHP
最新的php 文件上传模型,支持多文件上传
Aug 13 PHP
php实现邮件发送并带有附件
Jan 24 PHP
PDO预处理语句PDOStatement对象使用总结
Nov 20 PHP
php实现无限级分类
Dec 24 PHP
PHP IDE phpstorm 常用快捷键
May 18 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
Mar 15 PHP
PHP 中常量的知识整理
Apr 14 PHP
可兼容php5与php7的cURL文件上传功能实例分析
May 11 PHP
php 中htmlentities导致中文无法查询问题
Sep 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 魔术方法使用说明
2009/10/20 PHP
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
php目录拷贝实现方法
2015/07/10 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
Javascript 面试题随笔
2011/03/31 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
JS常见算法详解
2017/02/28 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
2019/01/08 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
构造方法和其他方法的区别
2016/04/26 面试题
酒店服务实习自我鉴定
2013/09/22 职场文书
经典公益广告词
2014/03/13 职场文书
市场营销专业自荐书
2014/06/10 职场文书
励志演讲稿200字
2014/08/21 职场文书
2015年信访工作总结
2015/04/07 职场文书
地道战观后感500字
2015/06/04 职场文书
入党后的感想
2015/08/10 职场文书