PHP 变量作用域

2025 年 3 月 10 日 | 阅读 4 分钟

变量的作用域定义了它在程序中可以被访问的范围。换句话说,“变量的作用域是程序中它被定义和可以被访问的部分。”

PHP 有三种变量作用域类型

  1. 局部变量
  2. 全局变量
  3. 静态变量

局部变量

在函数内部声明的变量被称为该函数的局部变量。这些局部变量仅在它们被声明的特定函数中具有作用域。这意味着这些变量不能在函数外部访问,因为它们具有局部作用域。

在函数外部声明的同名变量与在函数内部声明的变量完全不同。让我们通过一个例子来理解局部变量

文件: local_variable1.php

示例

立即执行

输出

Local variable declared inside the function is: 45

文件: local_variable2.php

示例

立即执行

输出

Web development language: PHP
Notice: Undefined variable: lang in D:\xampp\htdocs\program\p3.php on line 28

全局变量

全局变量是在函数外部声明的变量。这些变量可以在程序的任何地方访问。要在函数内部访问全局变量,请在变量前使用 GLOBAL 关键字。然而,这些变量可以在函数外部直接访问或使用,无需任何关键字。因此,在函数外部访问全局变量时无需使用任何关键字。

让我们通过一个例子来理解全局变量

示例

文件: global_variable1.php

示例

立即执行

输出

Variable inside the function: Sanaya Sharma
Variable outside the function: Sanaya Sharma

注意:如果不在函数内部使用 global 关键字尝试访问全局变量,它将生成一个变量未定义的错误。

示例

文件: global_variable2.php

示例

立即执行

输出

Notice: Undefined variable: name in D:\xampp\htdocs\program\p3.php on line 6
Variable inside the function:

使用 $GLOBALS 代替 global

在函数内部使用全局变量的另一种方法是使用预定义的 $GLOBALS 数组。

示例

文件: global_variable3.php

示例

立即执行

输出

Sum of global variables is: 18

如果局部变量和全局变量同名,则在函数内部局部变量的优先级高于全局变量。

示例

文件: global_variable2.php

示例

立即执行

输出

Value of x: 7

注意:局部变量的优先级高于全局变量。

静态变量

PHP 的一个特性是变量一旦完成执行就会被删除,内存也会被释放。有时即使函数执行完成后,我们也需要存储一个变量。因此,变量作用域的另一个重要特性是静态变量。我们在变量前使用 static 关键字来定义一个变量,这个变量被称为 **静态变量**。

静态变量只存在于局部函数中,但它在程序执行离开作用域后不会释放内存。通过一个例子来理解它

示例

文件: static_variable.php

示例

立即执行

输出

Static: 4
Non-static: 7
Static: 5
Non-static: 7

您会注意到 $num1 在每次函数调用后都会定期递增,而 $num2 则不会。这是因为 $num1 不是静态变量,所以在每次函数调用执行后它都会释放内存。


下一个主题PHP $ 和 $$