什么是全局变量?
全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到这个程序文件的结尾。和其他编程语言不同,全局变量不是自动设置为可用的。上一章节我们介绍了php变量的范围的局部变量,在PHP中,由于函数可以视为单独的程序代码片段,所以局部变量会覆盖全局变量的能见度,因此在函数中无法直接调用全局变量。
其代码如下所示的格式:
<?php $one = 10; $two = 20; // 测试在函数内部不能直接使用全局变量 $one 和 $two function sum(){ // 在函数内部新声明并且没有赋初始值的两个变量 echo "运算结果:".($one+$two)."<br>"; } sum(); //调用函数 ?>
该程序执行后输出的结果如下显示:
运算结果:0 // 两个变量没有初始值则为 NULL ,执行两个空值相加后结果为 0
在上面的实例中,函数 sum() 外面声明了两个全局变量 $one 和 $twe,但在PHP中,不能直接在函数中使用全局变量。所以在 sum() 函数中使用的变量为 $one 和 $twe,相当于重新声明的两个变量,并且没有被赋予初始值,是两个未定义空值的运算,所以得到的结果为0。在函数中若要使用全局变量,必须要利用关键字定义目标变量,而这个全局变量的关键字为 “ global ”, 使用关键字“global”你就可以把全局数据导入到一个函数的局部范围内,以告诉函数主体此变量为全局变量。
下面在函数内部使用关键字“global” 调用函数外部声明的全局变量来举个例子:
<?php $one = 10; $two = 20; // 测试在函数内部使用关键字加载 global 全局变量 $one 和 $two function sum(){ //在函数内部使用关键字加载 global 全局变量,加载多个使用逗号分隔 global $one, $two; // 使用函数外部声明的全局变量 echo "运算结果:".($one+$two)."<br>"; } sum(); //调用函数 ?>
该程序执行后输出的结果如下显示:
运算结果为 30 // 使用 global 关键字就可以加载全局变量在函数内使用
“global”关键字是用来导入全局变量的。看起来它工作的很好,而且很简单,但是还是要对使用“global”关键字来定义全局数据而担心。因为有三个理由:
1、代码重用几乎是不可能的。
如果一个函数依赖于全局变量,那么想在不同的环境中使用这个函数几乎是不可能的。另外一个问题就是你不能提取出这个函数,然后在其他的代码中使用。
2、调试并解决问题是非常困难的。
跟踪一个全局变量比跟踪一个非全局变量困难的多。一个全局变量可能会在一些不明显的包含文件中被重新定义,即使你有一个非常好的程序编辑器(或者IDE)来帮助你,你也得花了几个小时才能发现这个问题所在。
3、理解这些代码将是非常难的事情。
你很难弄清楚一个全局变量是从哪里来得,它是用来做什么的。在开发的过程中,你可能会知道知道每一个全局变量,但大概一年之后,你可能会忘记其中至少一般的全局变量,这个时候你会为自己使用那么多全局变量而懊悔不已。
$GLOBALS
在函数中使用全局变量,除了使用 global 关键字,还可以使用特殊的 php 自定义 $GLOBALS 数组。前面的例子可以写成使用 $GLOBALS 替代 global。
代码如下显示:
<?php $one = 10; $two = 20; function sum(){ //在函数内部使用 $GLOBALS 访问全局变量, $GLOBALS["two"] = $GLOBALS["one"] + $GLOBALS["two"]; } sum(); //调用函数 echo $two; ?>
说明: 在 $GLOBALS 数组中,每一个变量是一个元素,键名对应变量名,值对应变量的内容。$GLOBALS 之所以在全局范围中存在,是因为它是一个超全局变量。
以上就是全局变量的定义以及php变量的范围里面的全局变量实例介绍,下一章将介绍什么是php的static静态变量。
【相关教程推荐】
3. php实战视频教程
Atas ialah kandungan terperinci 什么是全局变量?php变量的范围之全局变量实例详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!