php global不起作用的解决办法:1、减少多层次的include调用,也尽量不要在函数内使用include;2、在相应的页面中将“$site_name”进行全局变量形式的声明。

本文操作环境:Windows7系统、PHP7.1、Dell G3电脑。

php global变量无效?

对于PHP初学者而言,在使用global关键字时,可能会发现,在函数内global一个函数外的变量,在某些情况下却无法正确输出该变量(即global变量无效)。下面我们来看一个简单而常见的例子。

在这里,我们有a.php和b.php两个页面。

b.php页面代码如下:<?php $site_name = 'CodePlayer';function sayHi(){ global $site_name; echo "Hello! Welcome to $site_name !";}?>

a.php页面代码如下:<?phpfunction include_view_page(){ include 'b.php'; sayHi(); }include_view_page();?>

上面的例子非常简单,我们希望当我们访问a.php页面,能够正确显示出欢迎语句。不过,遗憾的是,当我们使用浏览器访问a.php页面却发现输出结果如下:Hello! Welcome to !

【推荐学习:《PHP视频教程》】

也就是说,我们在函数include_view_page()中调用sayHi()函数时,b.php页面sayHi()函数中global的$site_name却没有被正确识别、生效。这究竟是怎么一回事呢?

实际上,当我们在函数include_view_page()中includeb.php页面时,b.php页面的变量$site_name就相当于存放在include_view_page()函数内的作用域中。众所周知,在函数内global一个变量实际上是在函数内建立一个对页面全局变量的引用。而在我们的例子中,这个$site_name变量对于a.php而言,它只是include_view_page()函数内的局部变量,因此无法global该变量,我们进行相关调用时自然无法获取到正确的变量和变量值。

在php中,我们尤其需要注意类似上述在函数内include某个页面,导致该页面中变量的作用域发生改变的问题。为了避免这种情况,我们应该尽量减少多层次的include调用,也尽量不要在函数内使用include。此外,我们还可以在b.php的页面中将$site_name进行全局变量形式的声明。//b.php

global $site_name;

$site_name = 'CodePlayer';

function sayHi(){

global $site_name;

echo "Hello! Welcome to $site_name !";

}

?>

php global没用,global php 不起作用怎么办相关推荐

  1. global与$GLOBAL的区别

    很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然. 1. $GLOBAL['var'] 是外部全局变量本身 2. global $var 是外部变量$var的同名引用或者指针 ...

  2. php global 作用,PHP关键字global在定义变量中的作用_PHP教程

    我们在使用 PHP关键字global如果用在function内部,则说明这个function内用的这个变量是全局的,全局变量就是在整个页面里都能起作用.例如 $conf=1; function con ...

  3. php $globa作用是l,php 关键字global在定义变量中的作用

    PHP关键字global如果用在function内部,则说明这个function内用的这个变量是全局的,全局变量就是在整个页面里都能起作用.例如$conf = 1; function conf_tes ...

  4. php中global什么意思,php中global与$GLOBAL的用法及区别(转载)

    php中global 与 $GLOBALS[""] 差别 原本觉得global和$GLOBALS除了写法不一样觉得,其他都一样,可是在实际利用中发现2者的差别还是很大的! 先看下面 ...

  5. mysql global index_CHECK GLOBAL INDEX

    您可以使用如下语句查看最近一次校验或订正的报告:mysql> CHECK GLOBAL INDEX `g_i_check` SHOW; 返回结果如下:+-------------+------- ...

  6. globle php,php中global与$GLOBAL的区别分析

    大多数的人都会以为global和$GLOBALS[]只是在写法上面有所不同,但是实际上并不是这样的,下面我们就来看一下它们之间究竟有何区别. 根据官方的解释是 $GLOBALS['var'] 是外部的 ...

  7. PHP 全局变量global与$GLOBAL大详解

    总结: A:1全局变量相当于有3个变量,函数外部的变量,函数内部的变量,及$GLOBAL的超全局变量. ----$GLOBAL是全局唯一的,而$var在为全局变量的别名. B:无论函数内部外部,只要曾 ...

  8. PHP全局变量global与$GLOBAL详解

    总结: A:1全局变量相当于有3个变量,函数外部的变量,函数内部的变量,及$GLOBAL的超全局变量. ----$GLOBAL是全局唯一的,而$var在为全局变量的别名. B:无论函数内部外部,只要曾 ...

  9. Python全局变量及Global关键字( Global variable in Python)

    目录 1. Python全局变量 2. 简单的示例 3. 全局变量的有效作用范围 4. 在函数内部修改变量 5. global关键字 6. 跨模块的情况 1. Python全局变量 Python全局变 ...

最新文章

  1. sql的四种连接 用mysql的语句写_170221、浅谈mysql的SQL的四种连接
  2. encountered end of file_需要给自己一个end
  3. sql mysql 删除数据库_在sql中将已建数据库删除的详细步骤
  4. mysql从库追主库日志_Mysql主库跑太快,从库追不上怎么做?
  5. 【实战 Ids4】║ 客户端、服务端、授权中心全线打通!
  6. 组策略系列之四:《精典放送:组策略管理20点》
  7. 美团面试官:讲清楚MySQL结构体系,立马发offer
  8. SQLServer2008数据库还原失败 恢复失败
  9. python关于sorted里面key,reverse以及lamdba,operator这几个鸟人
  10. android Textview属性细节以及EditText属性
  11. 计算机启动显示不正确的分区表,双硬盘启动失败提示“无效分区表”无法打开机器...
  12. 前端实现视频录制功能
  13. NVIDIA GeForce GTX 1060 驱动安装--------TensorFlow系列学习笔记(一)
  14. NLPCC'22 | 一种兼具准确性和多样性的图像风格化描述生成框架
  15. m基于matlab的PCM-FM码同步和GMSK的调制和解调方法,包括多符号检测MSD和Turbo编解码
  16. java如何将二进制转换为十进制 1
  17. 毕设(一):正则化极限学习机(RELM)、在线学习的极限学习机(OS-ELM)、带遗忘机制的在线学习极限学习机(FOS-ELM)
  18. mug网络用语_餐饮服务专用术语
  19. gmap 支持python吗_基于GMap.Net的地图解决方案
  20. Java毕设项目电子病历系统计算机(附源码+系统+数据库+LW)

热门文章

  1. Angular 自定义分页组件,自定义每页显示个数
  2. 判断页面环境是否在小程序的webview中
  3. js原生方式实现bind方法
  4. Unity ToLua 中Update的调用流程
  5. AR导航真的有前途,马云领衔1亿2500万投资
  6. HDU 3037 Saving Beans [Lucas定理]
  7. HTML中的table和div
  8. 微信小程序架构分析 (中)
  9. Perl 读取特定格式的文件名
  10. avd android 5.1,Kotlin开发进阶