PHP基础-变量作用域

admin 2025年6月18日20:56:33评论0 views字数 3012阅读10分2秒阅读模式

变量作用域指的是变量在程序中可被访问的范围。PHP 的作用域主要分为 全局作用域全局作用域、局部作用域、静态作用域、超全局变量。

1. 全局作用域
  • 在函数外部定义的变量属于全局作用域;

  • 全局变量在函数内部不能直接访问,必须使用 global 关键字或 $GLOBALS 数组。

示例:
<?php$greeting="你好";functionsayHello() {global$greeting// 或使用 $GLOBALS['greeting']echo$greeting;}sayHello(); // 输出:你好?>
PHP基础-变量作用域
2. 局部作用域

在函数内部定义的变量只能在函数内部使用;函数外部无法访问该变量。

示例:
<?phpfunctiontest() {$name="风铃";echo$name;}test(); // 输出:风铃echo$name// ❌ 报错:变量未定义?>
PHP基础-变量作用域
3. 静态作用域

使用 static 关键字定义的局部变量,会在函数调用之间保持其值;不会像普通局部变量那样每次调用都重新创建。

<?phpfunctioncounter() {static$count=0;$count++;echo$count . "<br>";}counter(); // 输出:1counter(); // 输出:2counter(); // 输出:3?>
PHP基础-变量作用域
4. 超全局变量

PHP 内置了一些 在任何作用域下都可以访问的全局数组变量,如:

  • $_GET

  • $_POST

  • $_SERVER

  • $_COOKIE

  • $_SESSION

  • $_FILES

  • $_ENV

  • $_REQUEST

  • $_GLOBALS

这些变量在函数内外都可以直接使用,无需声明。

超全局变量 描述
$_GET 用于接收通过 URL 传递的参数(GET 请求)
$_POST 用于接收通过表单提交的参数(POST 请求)
$_REQUEST 同时接收 $_GET$_POST 和 $_COOKIE 的值
$_SERVER 包含服务器和执行环境信息
$_FILES 处理上传的文件信息
$_ENV 包含环境变量信息
$_COOKIE 接收客户端发送的 Cookie 数据
$_SESSION 用于会话管理
$_GLOBALS 用于访问全局作用域中的变量
http_response_header 包含最后一次 HTTP 请求的响应头信息(不常用)
1. $_GET
// URL: scope.php?name=Fenglingecho$_GET['name']; // 输出 Fengling
PHP基础-变量作用域
PHP基础-变量作用域
2. $_POST
<formmethod="post"><inputtype="text"name="username"><inputtype="submit"></form><?phpecho$_POSTs['name'];?>
PHP基础-变量作用域
3. $_REQUEST

可以同时获取 GET / POST / COOKIE 中的值

<formmethod="post"><inputtype="text"name="username"><inputtype="submit"></form><?phpecho$_REQUEST['username'];?>
PHP基础-变量作用域
PHP基础-变量作用域
图一为GET、图二为POST
4. $_SERVER
<?PHPecho$_SERVER['SERVER_NAME'];  // 输出服务器名称echo$_SERVER['REQUEST_METHOD']; // 请求方式:GET 或 POST    ?>
PHP基础-变量作用域
PHP基础-变量作用域
4. $_SERVER

$_SERVER获取服务器/请求相关信息

示例:
<formmethod="post"><inputtype="text"name="username"><inputtype="submit"></form><?PHPecho$_REQUEST['username'] . "<br>";echo$_SERVER['SERVER_NAME'] . "<br>";  // 输出服务器名称echo$_SERVER['REQUEST_METHOD']; // 请求方式:GET 或 POST    ?>
PHP基础-变量作用域
PHP基础-变量作用域
输出服务器名称,并请求方式:GET 或 POST 。
5. $_FILES

处理上传的文件信息

<formmethod="post"enctype="multipart/form-data"><inputtype="file"name="myfile"><inputtype="submit"></form><?phpecho$_FILES['myfile']['name']; // 输出上传的文件名?>
PHP基础-变量作用域
PHP基础-变量作用域
6. $_COOKIE 和 $_SESSION

$_COOKIE接收客户端发送的 Cookie 数据,$_SESSION用于进行会话管理。

// 设置 cookiesetcookie("user""Tom"time()+3600);echo$_COOKIE['user']; // 读取 cookie// 使用 sessionsession_start();$_SESSION['user'="Tom";echo$_SESSION['user'];

这段代码涉及到 PHP 中两个非常重要的“会话保持机制” ——Cookie 和 Session

setcookie("user", "Tom", time()+3600);含义是:在浏览器中保存一个名为 user 的 cookie,值为 Tom,1 小时后过期time()+3600 表示当前时间 + 3600 秒)。

session_start();它会创建或恢复一个“用户会话”,并自动管理一个叫做 PHPSESSID 的 cookie。

$_SESSION['user'] = "Tom";把字符串 Tom 保存到服务器的 Session 中,键名是 user

PHP基础-变量作用域
Cookie 和 Session 的区别总结
项目 Cookie Session
存储位置 浏览器(客户端) 服务器端
安全性 较低(用户可以修改) 较高(用户无法直接修改)
典型用途 记住用户名、自动登录 登录验证、购物车、用户状态
是否依赖浏览器 间接依赖(通过 Cookie 存储 Session ID)

Cookie 和 Session 是 PHP 中的两种会话机制。Cookie 把数据保存在客户端浏览器中,适合存储一些不太敏感的信息;而 Session 把数据保存在服务器端,更适合保存登录状态等私密数据。

7. $_GLOBALS

用于访问全局作用域中的变量

<?php$name="风铃";$animal="cat";functionshowName() {echo$GLOBALS['name']; // 访问函数外的变量echo$GLOBALS['animal'];}showName(); // 输出:风铃?>
PHP基础-变量作用域
unset和isset函数

unset()可以删除变量,isset() 可以判断变量是否存在

<?php$name="风铃";functiontest(){$age="35";var_dump(isset($age));unset($age);var_dump(isset($age));}test();var_dump($name);?>
PHP基础-变量作用域
总结

变量作用域是 PHP 编程中一个基础却关键的概念,正确理解全局变量、局部变量、静态变量以及超全局变量的作用域,有助于我们编写结构清晰、逻辑严谨的程序。希望这篇文章能帮助你夯实基础,在后续的函数与模块化开发中更加得心应手。

原文始发于微信公众号(风铃情报站):PHP基础-变量作用域

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月18日20:56:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PHP基础-变量作用域https://cn-sec.com/archives/4176876.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息