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; // 输出 156. PHP $GLOBALS 超全局数组
PHP 还将所有的全局变量存储在一个名为 $GLOBALS[index] 的数组中。index 保存变量的名称。这个数组同样可以在函数内部访问,并且可以直接用来更新全局变量。
上面的示例可以重写为以下形式:
示例
$x = 5;
$y = 10;
function myTest() {
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // 输出 15