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动态生成JavaScript代码
Mar 09 PHP
整理的9个实用的PHP库简介和下载
Nov 09 PHP
PHP运行模式的深入理解
Jun 03 PHP
如何取得中文字符串中出现次数最多的子串
Aug 08 PHP
php中eval函数的危害与正确禁用方法
Jun 30 PHP
Thinkphp的volist标签嵌套循环使用教程
Jul 08 PHP
phpstorm编辑器乱码问题解决
Dec 01 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
Ajax实现对静态页面的文章访问统计功能示例
Oct 10 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 PHP
微信公众平台开发教程②微信端分享功能图文详解
Apr 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
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
Search File Contents PHP 搜索目录文本内容的代码
2010/02/21 PHP
关于IIS php调用com组件的权限问题
2012/01/11 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
2013/06/24 PHP
PHP多文件上传类实例
2015/03/07 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
Ext grid 添加右击菜单
2009/11/26 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
2018/09/03 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
python 实现插入排序算法
2012/06/05 Python
在Python的Django框架中加载模版的方法
2015/07/16 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
简单谈谈python中的语句和语法
2017/08/10 Python
python实现装饰器、描述符
2018/02/28 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
基于Python的Jenkins的二次开发操作
2020/05/12 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
村委会贫困证明
2014/01/14 职场文书
自荐信格式模板
2015/03/27 职场文书
贷款工作证明模板
2015/06/12 职场文书
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python