📜  php globals - PHP (1)

📅  最后修改于: 2023-12-03 15:33:29.264000             🧑  作者: Mango

PHP全局变量

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中是非常有用的,但是如果不小心使用可能会导致数据不一致或意外行为。建议使用局部变量替代全局变量,并谨慎使用超全局变量。