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 Session变量不能传送到下一页的解决方法
Nov 27 PHP
浅析memcache启动以及telnet命令详解
Jun 28 PHP
win7下memCache的安装过程(具体操作步骤)
Jun 28 PHP
php获取本周星期一具体日期的方法
Apr 20 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
PHP Try-catch 语句使用技巧
Feb 28 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
Nov 09 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
Nov 06 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
Jun 06 PHP
laravel框架与其他框架的详细对比
Oct 23 PHP
php pdo连接数据库操作示例
Nov 18 PHP
PHP变量的作用范围实例讲解
Dec 22 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
discuz加密解密函数使用方法和中文注释
2014/01/21 PHP
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
用nodejs的实现原理和搭建服务器(动态)
2016/08/10 NodeJs
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
借助node实战JSONP跨域实例
2017/03/30 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
laypage.js分页插件使用方法详解
2019/07/27 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
爬山算法简介和Python实现实例
2014/04/26 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
python面试题Python2.x和Python3.x的区别
2019/05/28 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
python如何实现单链表的反转
2020/02/10 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
银行职业规划书范文
2013/12/28 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
学校捐书活动总结
2015/05/08 职场文书
篮球赛新闻稿
2015/07/17 职场文书
Linux系统下安装PHP7.3版本
2021/06/26 PHP
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS
Redis主从复制操作和配置详情
2022/09/23 Redis