php多次include后导致全局变量global失效的解决方法

本文实例讲述了php多次include后导致全局变量global失效的解决方法。分享给大家供大家参考。具体分析如下:

在多个文件中,文件一个接一个include,但最后一个文件里的函数使用global后却无法引用全局变量。例如:
a.php文件:

<?php
$aa = 1;
?>

b.php文件:

<?php
include a.php
function show(){
global $aa;
var_dump($aa);
}
?>

显示:null;

这种失效是由于多种原因造成的。一个有效的方法是,如果你决定将一个变量当作多个文件的全局变量,那么使用$GLOBALS数组总是有效的。比如上例中的a.php:

<?php
$GLOBALS['aa'] = 1;
?>

然后就可以在多个文件的函数、方法中引用这个变量了。

希望本文所述对大家的php程序设计有所帮助。

(0)

相关推荐

  • PHP Global定义全局变量使用说明

    很不习惯PHP中的变量作用域,PHP中函数变量和全局是完全隔绝的,也就是无法相互访问.比如下面这样: 复制代码 代码如下: $test = 123; abc(); //这里什么都不输出,因为访问不到$test变量function abc(){    echo($test);}$test = 123;abc(); //这里什么都不输出,因为访问不到$test变量function abc(){    echo($test);} 如果,你想在函数内部访问外部变量,你需要这样: 复制代码 代码如下: $

  • 全面了解PHP中的全局变量

    PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用. 你不需要特别说明,就可以在函数及类中使用. PHP 超级全局变量列表: •$GLOBALS •$_SERVER •$_REQUEST •$_POST •$_GET •$_FILES •$_ENV •$_COOKIE •$_SESSION 本章节我们将讲解几个常用的超级全局变量,其余变量我们在接下来几个章节会介绍到. PHP $GLOBAL $GLOBAL 是PHP的一个超级全局变量组,在

  • PHP全局变量与超级全局变量区别分析

    本文分析了PHP全局变量与超级全局变量区别.分享给大家供大家参考,具体如下: 全局变量就是在函数外面定义的变量.不能在函数中直接使用.因为它的作用域不会到函数内部.所以在函数内部使用的时候常常看到类似global $a; 超全局变量作用域在所有脚本都有效.所以,在函数可直接使用.比如 $_GET,$_SERVER都是超全局变量.除$_GET,$_POST,$_SERVER,$_COOKIE等之外的超全局变量保存在$GLOBALS数组中.注意,不要误写成$_GLOBALS.有点受到$_POST的影

  • 解析在PHP中使用全局变量的几种方法

    简介即使开发一个新的大型PHP程序,你也不可避免的要使用到全局数据,因为有些数据是需要用到你的代码的不同部分的.一些常见的全局数据有:程序设定类.数据库连接类.用户资料等等.有很多方法能够使这些数据成为全局数据,其中最常用的就是使用"global"关键字申明,稍后在文章中我们会具体的讲解到.使用"global"关键字来申明全局数据的唯一缺点就是它事实上是一种非常差的编程方式,而且经常在其后导致程序中出现更大的问题,因为全局数据把你代码中原本单独的代码段都联系在一起了

  • php多次include后导致全局变量global失效的解决方法

    本文实例讲述了php多次include后导致全局变量global失效的解决方法.分享给大家供大家参考.具体分析如下: 在多个文件中,文件一个接一个include,但最后一个文件里的函数使用global后却无法引用全局变量.例如: a.php文件: <?php $aa = 1; ?> b.php文件: <?php include a.php function show(){ global $aa; var_dump($aa); } ?> 显示:null; 这种失效是由于多种原因造成的

  • jquery mobile页面跳转后样式丢失js失效的解决方法

    用ajax跳转的时候,从a.html跳转到b.html后,b.html的css以及js都失效了. 方法: 将当前页面b.html需要用到的css以及js放在<page>div内. 原理: 由于jqm的ajax跳转的时候,只会把b.html中<page>内的内容加载进dom,而<page>外的代码都不会加载,所以导致在<page>外的js和css都失效了.

  • Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题的解决方法

    if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){ finish(); return; } 应用程序入口Activity的onCreate方法中加入上面的判断,完美解决应用程序多次重启问题. 应用程序入口Activity的onCreate方法中加入上面的判断,在setcontentview方法之前调用. 以上所述是小编给大家介绍的 Android应用第一次安装成功点击"打开"后Ho

  • 修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法

    之前把现有这台阿里CentOS7.2系统的Python2.7.5升级成Python3.6后,yum工具就不能不觉使用了.当时查了下说明python版本的问题,但是用网上的方法还是没解决,后面也就一直没管了.最近要弄一个Nodejs小程序,需要用yum安装一些开发工具,不得不修复这个问题. 1 yum工具报错情况 直接执行 yum 命令就会提示 /usr/bin/yum 文件第34行有错误: [root@typecodes ~]# yum File "/usr/bin/yum", lin

  • 一个applicationContext 加载错误导致的阻塞问题及解决方法

    问题为对接一个sso的验证模块,正确的对接姿势为,接入一个 filter, 然后接入一个 SsoListener . 然而在接入之后,却导致了应用无法正常启动,或者说看起来很奇怪,来看下都遇到什么样的问题,以及是如何处理的? 还是 web.xml, 原本是这样的: (很简洁!) <?xml version="1.0" encoding="UTF-8" ?> <web-app xmlns="http://java.sun.com/xml/n

  • Docker暴露2375端口导致服务器被攻击问题及解决方法

    相信了解过docker remote API的同学对2375端口都不陌生了,2375是docker远程操控的默认端口,通过这个端口可以直接对远程的docker daemon进行操作. 当$HOST主机以docker daemon -H=0.0.0.0:2375方式启动daemon时,可以在外部机器对$HOST的docker daemon进行直接操作: docker -H tcp://$HOST:2375 ps 好,说说如何"入侵",怎么通过这个端口入侵宿主机呢? 这个应该要从几个点说起

  • 服务器大量php-cgi.exe进程导致CPU占用100%的解决方法

    windows 2003+IIS6中优化fastcgi配置文件fcgiext.ini,减少php-cgi.exe进程数量和所占内存大小 本来听说fastcgi比isapi好就在服务器中装上了,配置环境为windows 2003+IIS6+fastcgi(FCGI)+PHP5.2.17,经过与很长一段时间观察,发现工作在FastCGI模式下的PHP会占用越来越多的内存,访问量稍微多点php-cgi进程就多了N个,同样情况下能比原来用isapi模式的时候多出几百M,我的服务器内存只有2G伤不起啊.

  • 修改计算机名或IP后Oracle10g服务无法启动的解决方法

    遇到的问题,问题产生原因不详.症状为,windows服务中有一项oracle服务启动不了,报出如下错误. Windows 不能在 本地计算机 启动 OracleDBConsoleorcl .有关更多信息,查阅系统事件日志.如果这是非 Microsoft 服务,请与服务厂商联系,并参考特定服务错误代码 2 后从网上寻得一贴,问题解决,解决原因不详,反正就是解决了. 问题描述:学校机房母盘安装Oracle10g传输到其它机器,母盘的Oracle可以正常使用,而其它机器启动Oracle服务时无法启动.

  • 克隆虚拟Linux后ip找不到的解决方法

    使用VMware虚拟机的的克隆功能,快速的复制带有各种配置的Linux系统.会发现复制后的虚拟系统没有eth0网卡. 如下所示: 解决方法: 1.编辑/etc/udev/rules.d/70-persistent-net.rules文件 并记住eth2的ATTR{address}的值 把NAME="eth0"的那行配置注释掉或者删掉,把NAME="eth1"的修改成NAME="eth0",修改后如下: 2.更改网卡配置文件,/etc/syscon

  • iis6手工创建网站后无法运行php脚本的解决方法

    给人搬了十几个网站,老站用西部数码建站助手创建的,现在过期了无法继续创建,只能在Internet 信息服务(IIS)管理器创建网站,创建下来都没问题,但是就是无法打开网站. 测试打开txt文档.静态页面都能打开,一到打开php文件就直接就挂了,无法打开,什么报错都没有. 之前有用iis6以外的服务器创建过网站,都是直接创建就可以运行. 没报错不好找问题,百度用别人的方法操作也不行.实在没办法,只能对着之前用建站助手创建的网站配置,放下架子,一个个看过去,结果发现用建站助手创建的网站ISAPI拓展

随机推荐