PHP 变量作用域
PHP 变量作用域
在 PHP 中,变量可以在脚本中的任何地方被声明。
变量的作用域是脚本中变量可被引用/使用的位置。
PHP 有三种不同的变量作用域:
- local
- global
- static
全局和局部作用域
在函数外部声明的变量具有全局作用域,并且只能在函数外部访问:
实例
具有全局作用域的变量:
$x = 5; // 全局作用域
function myTest() {
// 在此函数中使用 x 将生成错误
echo "<p>函数内的变量 x 是:$x</p>";
}
myTest();
echo "<p>函数外的变量 x 是:$x</p>";
在函数内部声明的变量具有局部作用域,并且只能在该函数内部访问:
实例
具有局部作用域的变量:
function myTest() {
$x = 5; // 局部作用域
echo "<p>函数内的变量 x 是:$x</p>";
}
myTest();
// 在函数外部使用 x 将生成错误
echo "<p>函数外的变量 x 是:$x</p>";
提示:您可以在不同的函数中拥有相同名称的局部变量,因为局部变量仅在其声明的函数中可识别。
PHP global 关键字
global 关键字用于从函数内部访问全局变量。
为此,请在变量(在函数内部)之前使用 global 关键字:
实例
$x = 5;
$y = 10;
function myTest() {
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // 输出 15
PHP 还将所有全局变量存储在名为 $GLOBALS[index] 的数组中。index 保存变量的名称。该数组也可以在函数内部访问,并且可以用于直接更新全局变量。
上面的例子可以重写为:
实例
$x = 5;
$y = 10;
function myTest() {
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // 输出 15
PHP static 关键字
通常,当函数完成/执行时,其所有变量都会被删除。但是,有时我们希望局部变量不被删除。我们需要它来完成进一步的工作。
为此,请在首次声明变量时使用 static 关键字:
实例
function myTest() {
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
然后,每次调用该函数时,该变量仍将包含上次调用该函数时所包含的信息。
注意:该变量仍然是函数的局部变量。