PHP 简明教程

PHP $GLOBALS

1. PHP $GLOBALS

$GLOBALS 超全局变量是一个内置的关联数组,其中包含了指向脚本中所有全局变量的引用。

PHP 的超全局变量是内置变量,它们始终可以在所有的作用域中被直接访问

2. 全局变量 (Global Variables)

全局变量是指可以从任何作用域访问的变量。

在最外层作用域声明的变量会自动成为全局变量,并且可以被任何作用域调用。

然而,如果您想在函数内部使用外部的全局变量,您必须使用 global 关键字显式地声明它们,或者通过 $GLOBALS 语法来引用它们。

示例

在函数内部引用全局变量 $x

$x = 75;

function myfunction() {
  echo $GLOBALS['x'];
}

myfunction();

这一点与许多其他的编程语言不同。在其他语言中,全局变量通常无需特殊声明即可在函数内直接使用。

示例

在 PHP 中,如果在函数内部不使用 $GLOBALS 语法或 global 关键字直接引用全局变量,您将得不到任何结果(甚至会引发错误):

$x = 75;

function myfunction() {
  echo $x; // 这里会报错,因为函数内不存在局部的 $x
}

myfunction();

您也可以使用 global 关键字将函数内部要使用的变量显式定义为全局变量:

示例

在函数内部将 $x 声明为全局:

$x = 75;

function myfunction() {
  global $x;
  echo $x;
}

myfunction();

3. 创建全局变量

无论您是否使用 $GLOBALS 语法,在代码的最外层作用域中创建的变量都天然是全局变量。

示例

$x = 100;

echo $GLOBALS['x'];
echo $x;

默认情况下,在函数内部创建的变量属于局部变量(只在该函数内部有效)。但是,您完全可以利用 $GLOBALS 语法在函数内部直接创建一个全新的全局变量。

示例

在函数内部创建一个全局变量 $z,并在函数外部成功调用它:

$x = 10;
$y = 20;

function result() {
  // 在函数内直接创建并赋值给全局变量 z
  $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}

result(); // 必须先调用函数执行逻辑
echo $z;  // 在函数外部输出 30