局部作用域是指变量只能在定义它的函数内部访问,也就是函数内部的变量。当函数执行完毕后,局部变量会被销毁。
function example() {
$x = 1; // 局部变量
echo $x;
}
example(); // 输出 1
echo $x; // 报错,$x 未定义
全局作用域是指变量在整个脚本中都可以访问,包括函数内部和外部。在函数内部使用 global
关键字可以访问全局变量。
$x = 1; // 全局变量
function example() {
echo $GLOBALS['x']; // 使用 $GLOBALS 数组访问全局变量
echo $x; // 报错,$x 未定义
}
example(); // 输出 1
静态作用域是指变量在函数调用后不会被销毁,下次调用函数时仍然可以访问。在变量定义时使用 static
关键字可以创建静态变量。
function example() {
static $x = 0; // 静态变量
echo $x;
$x++;
}
example(); // 输出 0
example(); // 输出 1
example(); // 输出 2
超全局作用域是指在脚本的任何地方都可以访问的特殊变量。PHP中有多个超全局变量,如 $_SERVER
、$_GET
、$_POST
等。
echo $_SERVER['PHP_SELF']; // 输出当前脚本文件名
echo $_GET['id']; // 输出 URL 中的参数 id 的值
echo $_POST['name']; // 输出表单中提交的 name 字段的值