什么是全局变量?
全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到这个程序文件的结尾。和其他编程语言不同,全局变量不是自动设置为可用的。上一章节我们介绍了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实战视频教程
以上是什么是全局变量?php变量的范围之全局变量实例详解的详细内容。更多信息请关注PHP中文网其他相关文章!

负载均衡会影响会话管理,但可以通过会话复制、会话粘性和集中式会话存储解决。1.会话复制在服务器间复制会话数据。2.会话粘性将用户请求定向到同一服务器。3.集中式会话存储使用独立服务器如Redis存储会话数据,确保数据共享。

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

PHP会话的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。1.Cookies通过在客户端存储数据来管理会话,简单但安全性低。2.Token-basedAuthentication使用令牌验证用户,安全性高但需额外逻辑。3.Database-basedSessions将数据存储在数据库中,扩展性好但可能影响性能。4.Redis/Memcached使用分布式缓存提高性能和扩展性,但需额外配

Sessionhijacking是指攻击者通过获取用户的sessionID来冒充用户。防范方法包括:1)使用HTTPS加密通信;2)验证sessionID的来源;3)使用安全的sessionID生成算法;4)定期更新sessionID。

本文比较了PHP和ASP.NET,重点是它们对大规模Web应用程序,性能差异和安全功能的适用性。两者对于大型项目都是可行的,但是PHP是开源和无关的,而ASP.NET,


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3汉化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript开发工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)