📅  最后修改于: 2023-12-03 15:33:29.264000             🧑  作者: Mango
PHP的全局变量是一种在整个脚本中访问的特殊变量,称为全局变量。在函数中定义的变量只能在函数内部使用,而全局变量可在整个PHP脚本中访问。
示例代码:
// 声明一个全局变量
$GLOBALS['name'] = 'Jack';
// 定义一个函数
function showName() {
echo $GLOBALS['name'];
}
// 调用函数
showName();
以上代码声明了一个全局变量 $name
,并在 showName()
函数中使用 $GLOBALS
数组来访问该全局变量。函数调用输出结果为 'Jack'。
PHP还提供了超全局变量,可以直接在PHP脚本中使用,无需使用 $GLOBALS
数组。
以下是PHP的超全局变量:
$GLOBALS
- 引用全局作用域中可用的全局变量$_SERVER
- 当前脚本执行的服务器相关信息和环境变量$_GET
- 通过 URL 参数传递到当前脚本的变量$_POST
- 通过 HTTP POST 方法传递到当前脚本的变量$_FILES
- 通过 HTTP POST 方法上传到当前脚本的文件信息$_REQUEST
- 通过 HTTP 请求变量(GET、POST和COOKIE)传递到当前脚本的变量$_SESSION
- 当前会话中保存的变量$_ENV
- 环境变量集合例如,以下代码使用 $_GET
超全局变量,在URL中传递参数,并将其输出:
<?php
echo 'Hello '.$_GET["name"];
?>
在访问该脚本时可通过如下URL将值作为参数传递给 name
变量:
https://example.com/phpscript.php?name=Jack
使用全局变量可能会导致PHP脚本的意外行为。建议使用局部变量来代替全局变量,尤其是在函数中使用。
示例代码:
// 定义一个函数
function increment() {
static $count = 0;
$count++;
return $count;
}
// 调用函数
echo increment(); // 输出 1
echo increment(); // 输出 2
echo increment(); // 输出 3
以上代码使用 static
关键字定义了一个静态局部变量 $count
,每次函数被调用时,该变量都会自增并返回当前值。这样可以避免使用全局变量,同时保持数据的持久性。
全局变量和超全局变量在PHP中是非常有用的,但是如果不小心使用可能会导致数据不一致或意外行为。建议使用局部变量替代全局变量,并谨慎使用超全局变量。