PHP 简明教程

PHP 变量作用域

1. PHP 变量作用域

PHP 变量可以在 PHP 代码的任何位置声明。

变量的作用域是指在脚本中可以引用或使用该变量的部分。

PHP 有三种不同的变量作用域:

  • global (全局)
  • local (局部)
  • static (静态)

2. 全局作用域 (Global Scope)

在函数外部声明的变量具有全局作用域,并且只能在函数外部访问:

示例

具有全局作用域的变量:

$x = 5; // 全局作用域

function myTest() {
  // 在此函数内使用 x 将不起作用
  echo "变量 x 在函数内部是: $x";
}
myTest();

echo "变量 x 在函数外部是: $x";

3. 局部作用域 (Local Scope)

在函数内部声明的变量具有局部作用域,并且只能在该函数内部访问。

局部变量在函数被调用时创建,并在函数执行完毕后被销毁:

示例

具有局部作用域的变量:

function myTest() {
  $x = 5; // 局部作用域
  echo "变量 x 在函数内部是: $x";
}
myTest();

// 在函数外部使用 x 将不起作用
echo "变量 x 在函数外部是: $x";

4. 静态作用域 (Static Scope)

通常情况下,当一个函数执行完毕时,它的所有变量都会被删除。然而,有时我们希望某个局部变量不要被删除,因为我们需要在接下来的工作中继续使用它。

要实现这一点,在您第一次声明变量时请使用 static 关键字。

这样,每次调用该函数时,该变量都将保留上次函数被调用时的值。

注意: 该变量仍然是该函数的局部变量。

示例

function myTest() {
  static $x = 0; // 静态作用域
  echo $x;
  $x++;
}

myTest();
myTest();
myTest();

5. PHP global 关键字

global 关键字用于在函数内部访问全局变量。

要做到这一点,请在(函数内部的)变量前使用 global 关键字:

示例

$x = 5;
$y = 10;

function myTest() {
  global $x, $y;
  $y = $x + $y;
}

myTest();
echo $y; // 输出 15

6. PHP $GLOBALS 超全局数组

PHP 还将所有的全局变量存储在一个名为 $GLOBALS[index] 的数组中。index 保存变量的名称。这个数组同样可以在函数内部访问,并且可以直接用来更新全局变量。

上面的示例可以重写为以下形式:

示例

$x = 5;
$y = 10;

function myTest() {
  $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}

myTest();
echo $y; // 输出 15