欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

什么是全局变量?php变量的范围之全局变量实例详解

程序员文章站 2022-04-01 11:38:48
...
什么是全局变量?

全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到这个程序文件的结尾。和其他编程语言不同,全局变量不是自动设置为可用的。上一章节我们介绍了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静态变量

【相关教程推荐】

1. 《php.cn独孤九贱(4)-php视频教程

2. php编程从入门到精通全套视频教程

3. php实战视频教程

以上就是什么是全局变量?php变量的范围之全局变量实例详解的详细内容,更多请关注其它相关文章!