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
php导出word文档与excel电子表格的简单示例代码
Mar 08 PHP
php字符串按照单词进行反转的方法
Mar 14 PHP
PHP中trim()函数简单使用指南
Apr 16 PHP
PHP实现的增强性mhash函数
May 27 PHP
php实现求相对时间函数
Jun 15 PHP
PHP中余数、取余的妙用
Jun 29 PHP
php类自动加载器实现方法
Jul 28 PHP
orm获取关联表里的属性值
Apr 17 PHP
PHP自定义函数获取URL中一级域名的方法
Aug 23 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 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获取服务器时间的实现代码
2013/06/07 PHP
PHP加密解密类实例代码
2016/07/20 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
laravel框架使用阿里云短信发送消息操作示例
2020/02/15 PHP
Javascript Tab 导航插件 (23个)
2009/06/11 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
AngularJS 中ui-view传参的实例详解
2017/08/25 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
2018/08/27 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python闭包的两个注意事项(推荐)
2017/03/20 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
DBA的职责都有哪些
2012/05/16 面试题
任课老师推荐信范文
2013/11/24 职场文书
项目管理计划书
2014/01/09 职场文书
计算机专业职业生涯规划范文
2014/01/19 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
Python函数式编程中itertools模块详解
2021/09/15 Python
CSS基础详解
2021/10/16 HTML / CSS
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
Python 中面向接口编程
2022/05/20 Python
Java异常体系非正常停止和分类
2022/06/14 Java/Android
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android