php 变量作用域
1. 全局作用域
全局作用域中的变量在脚本的任何地方都可以访问,但在函数内部需要使用
global 关键字。<?php
$global_var = "I am global";
function testGlobal() {
global $global_var;
echo $global_var . PHP_EOL;
}
testGlobal(); // 输出:I am global
echo $global_var . PHP_EOL; // 输出:I am global
?>
2. 局部作用域
局部作用域中的变量只能在定义它们的函数内部访问。
<?php
function testLocal() {
$local_var = "I am local";
echo $local_var . PHP_EOL;
}
testLocal(); // 输出:I am local
// echo $local_var; // 错误:不能在函数外部访问
?>
3. 静态作用域
静态作用域中的变量在函数调用之间保持其值不变。
<?php
function testStatic() {
static $static_var = 0;
$static_var++;
echo $static_var . PHP_EOL;
}
testStatic(); // 输出:1
testStatic(); // 输出:2
testStatic(); // 输出:3
?>
4. 超全局作用域
PHP 提供了一系列超全局数组,这些数组在脚本的任何地方都可以直接访问。
-
$_SERVER:存储服务器环境变量和请求信息。 -
$_GET:存储通过 GET 方法传递的请求参数。 -
$_POST:存储通过 POST 方法传递的请求参数。 -
$_COOKIE:存储客户端的 cookie 数据。 -
$_SESSION:存储会话数据。 -
$_REQUEST:存储$_GET、$_POST和$_COOKIE的组合数据。 -
$_ENV:存储环境变量。 -
$_FILES:存储上传的文件信息。 $GLOBALS:存储所有变量的信息
<?php
// 使用 $_GET 超全局数组
$name = $_GET['name'] ?? 'Guest';
echo "Hello, " . $name . PHP_EOL;
// 使用 $_SERVER 超全局数组
echo "Server IP: " . $_SERVER['SERVER_ADDR'] . PHP_EOL;
// 使用 $_SESSION 超全局数组
session_start();
$_SESSION['views'] = $_SESSION['views'] ?? 0;
$_SESSION['views']++;
echo "Views: " . $_SESSION['views'] . PHP_EOL;
// 使用 $GLOBALS 超全局数组
$globalVar = "I am global";
echo $GLOBALS['globalVar']; // 输出 "I am global"
?>
总结
-
全局作用域:变量在脚本的任何地方都可以访问,但在函数内部需要使用
global关键字。 -
局部作用域:变量只能在定义它们的函数内部访问。
-
静态作用域:变量在函数调用之间保持其值不变。
-
超全局作用域:超全局数组在脚本的任何地方都可以直接访问。
本文来自博客园,作者:Carvers,转载请注明原文链接:https://www.cnblogs.com/carver/articles/18944246

浙公网安备 33010602011771号