Loading

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 关键字。
  • 局部作用域:变量只能在定义它们的函数内部访问。
  • 静态作用域:变量在函数调用之间保持其值不变。
  • 超全局作用域:超全局数组在脚本的任何地方都可以直接访问。
posted @ 2025-06-23 14:17  Carvers  阅读(18)  评论(0)    收藏  举报