PHP 变量作用域
PHP 变量作用域
在 PHP 中,变量可以在脚本中的任何位置声明。
变量的作用域是脚本中可以引用/使用该变量的部分。
PHP 有三种不同的变量作用域
- 局部
- 全局
- 静态
全局和局部作用域
在函数外部声明的变量具有全局作用域,只能在函数外部访问。
示例
具有全局作用域的变量
$x = 5; // global scope
function myTest() {
// using x inside this function will generate an error
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
echo "<p>Variable x outside function is: $x</p>";
亲自尝试 »
在函数内部声明的变量具有局部作用域,只能在该函数内部访问。
示例
具有局部作用域的变量
function myTest() {
$x = 5; // local scope
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
// using x outside the function will generate an error
echo "<p>Variable x outside function is: $x</p>";
亲自尝试 »
可以在不同的函数中使用相同名称的局部变量,因为局部变量只被声明它们的函数识别。
PHP global 关键字
使用 global
关键字可以在函数内部访问全局变量。
要做到这一点,请在变量之前(在函数内部)使用 global
关键字。
示例
$x = 5;
$y = 10;
function myTest() {
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // outputs 15
亲自尝试 »
PHP 还将所有全局变量存储在一个名为 $GLOBALS[index]
的数组中。index
持有变量的名称。这个数组也可以从函数内部访问,并可以用来直接更新全局变量。
上面的例子可以改写成这样
示例
$x = 5;
$y = 10;
function myTest() {
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // outputs 15
亲自尝试 »
PHP static 关键字
通常,当一个函数完成/执行时,它所有的变量都会被删除。但是,有时我们希望一个局部变量不被删除,因为我们需要它来完成后续的任务。
要做到这一点,在首次声明变量时使用 static
关键字。
然后,每次调用函数时,该变量将保留上次调用函数时所包含的信息。
注意:该变量仍然是函数的局部变量。