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+DBM的同学录程序(4)
Oct 09 PHP
用PHP读取flv文件的播放时间长度
Sep 03 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
Aug 07 PHP
php获取文章上一页与下一页的方法
Dec 01 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
Feb 08 PHP
PHP学习笔记(二):变量详解
Apr 17 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
Sep 23 PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 PHP
分析php://output和php://stdout的区别
May 06 PHP
PHP生成zip压缩包的常用方法示例
Aug 22 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 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+javascript模拟Matrix画面
2006/10/09 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
FormValid0.5版本发布,带ajax自定义验证例子
2007/08/17 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
详解js的六大数据类型
2016/12/27 Javascript
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
python字典多键值及重复键值的使用方法(详解)
2016/10/31 Python
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
什么叫做SQL注入,如何防止
2016/10/04 面试题
技校生自我鉴定范文
2013/09/26 职场文书
高中生操行评语
2014/04/25 职场文书
个人债务授权委托书
2014/10/17 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
雷锋观后感
2015/06/10 职场文书
雷锋的观后感
2015/06/10 职场文书
班主任培训研修日志
2015/11/13 职场文书
vue首次渲染全过程
2021/04/21 Vue.js
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers