php global没用,global php 不起作用怎么办
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 不起作用怎么办相关推荐
- global与$GLOBAL的区别
很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然. 1. $GLOBAL['var'] 是外部全局变量本身 2. global $var 是外部变量$var的同名引用或者指针 ...
- php global 作用,PHP关键字global在定义变量中的作用_PHP教程
我们在使用 PHP关键字global如果用在function内部,则说明这个function内用的这个变量是全局的,全局变量就是在整个页面里都能起作用.例如 $conf=1; function con ...
- php $globa作用是l,php 关键字global在定义变量中的作用
PHP关键字global如果用在function内部,则说明这个function内用的这个变量是全局的,全局变量就是在整个页面里都能起作用.例如$conf = 1; function conf_tes ...
- php中global什么意思,php中global与$GLOBAL的用法及区别(转载)
php中global 与 $GLOBALS[""] 差别 原本觉得global和$GLOBALS除了写法不一样觉得,其他都一样,可是在实际利用中发现2者的差别还是很大的! 先看下面 ...
- mysql global index_CHECK GLOBAL INDEX
您可以使用如下语句查看最近一次校验或订正的报告:mysql> CHECK GLOBAL INDEX `g_i_check` SHOW; 返回结果如下:+-------------+------- ...
- globle php,php中global与$GLOBAL的区别分析
大多数的人都会以为global和$GLOBALS[]只是在写法上面有所不同,但是实际上并不是这样的,下面我们就来看一下它们之间究竟有何区别. 根据官方的解释是 $GLOBALS['var'] 是外部的 ...
- PHP 全局变量global与$GLOBAL大详解
总结: A:1全局变量相当于有3个变量,函数外部的变量,函数内部的变量,及$GLOBAL的超全局变量. ----$GLOBAL是全局唯一的,而$var在为全局变量的别名. B:无论函数内部外部,只要曾 ...
- PHP全局变量global与$GLOBAL详解
总结: A:1全局变量相当于有3个变量,函数外部的变量,函数内部的变量,及$GLOBAL的超全局变量. ----$GLOBAL是全局唯一的,而$var在为全局变量的别名. B:无论函数内部外部,只要曾 ...
- Python全局变量及Global关键字( Global variable in Python)
目录 1. Python全局变量 2. 简单的示例 3. 全局变量的有效作用范围 4. 在函数内部修改变量 5. global关键字 6. 跨模块的情况 1. Python全局变量 Python全局变 ...
最新文章
- sql的四种连接 用mysql的语句写_170221、浅谈mysql的SQL的四种连接
- encountered end of file_需要给自己一个end
- sql mysql 删除数据库_在sql中将已建数据库删除的详细步骤
- mysql从库追主库日志_Mysql主库跑太快,从库追不上怎么做?
- 【实战 Ids4】║ 客户端、服务端、授权中心全线打通!
- 组策略系列之四:《精典放送:组策略管理20点》
- 美团面试官:讲清楚MySQL结构体系,立马发offer
- SQLServer2008数据库还原失败 恢复失败
- python关于sorted里面key,reverse以及lamdba,operator这几个鸟人
- android Textview属性细节以及EditText属性
- 计算机启动显示不正确的分区表,双硬盘启动失败提示“无效分区表”无法打开机器...
- 前端实现视频录制功能
- NVIDIA GeForce GTX 1060 驱动安装--------TensorFlow系列学习笔记(一)
- NLPCC'22 | 一种兼具准确性和多样性的图像风格化描述生成框架
- m基于matlab的PCM-FM码同步和GMSK的调制和解调方法,包括多符号检测MSD和Turbo编解码
- java如何将二进制转换为十进制 1
- 毕设(一):正则化极限学习机(RELM)、在线学习的极限学习机(OS-ELM)、带遗忘机制的在线学习极限学习机(FOS-ELM)
- mug网络用语_餐饮服务专用术语
- gmap 支持python吗_基于GMap.Net的地图解决方案
- Java毕设项目电子病历系统计算机(附源码+系统+数据库+LW)