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 相关文章推荐
Windows下安装Memcached的步骤说明
Apr 25 PHP
php 变量未定义等错误的解决方法
Jan 12 PHP
重新封装zend_soap实现http连接安全认证的php代码
Jan 12 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
Jul 03 PHP
php设置session值和cookies的学习示例
Mar 21 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
May 27 PHP
无需数据库在线投票调查php代码
Jul 20 PHP
PHP里的$_GET数组介绍
Mar 22 PHP
PHP实现简易用户登录系统
Jul 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 &amp;&amp; 逻辑与运算符使用说明
2010/03/04 PHP
PHP防盗链代码实例
2014/08/27 PHP
PHP操作MySQL事务实例
2014/11/05 PHP
php实现无限级分类
2014/12/24 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
javascript Base类 包含基本的方法
2009/07/22 Javascript
date.parse在IE和FF中的区别
2010/07/29 Javascript
javascript中&quot;/&quot;运算符常见错误
2010/10/13 Javascript
js禁止回车提交表单的示例代码
2013/12/23 Javascript
用console.table()调试javascript
2014/09/04 Javascript
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
Python基本数据类型详细介绍
2014/03/11 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
python 换位密码算法的实例详解
2017/07/19 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
python实现维吉尼亚算法
2019/03/20 Python
Python流程控制 if else实现解析
2019/09/02 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
Python之字典对象的几种创建方法
2020/09/30 Python
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
HTML5 Canvas概述
2009/08/26 HTML / CSS
html5文字阴影效果text-shadow使用示例
2013/07/25 HTML / CSS
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
汽车销售顾问求职自荐信
2014/01/01 职场文书
《最大的“书”》教学反思
2014/02/14 职场文书
天猫活动策划方案
2014/08/21 职场文书
好媳妇事迹材料
2014/12/24 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
业余无线电通联Q语
2022/02/18 无线电