PHP 函数和超级全局数组

一、普通变量的作用域

普通全局变量不能直接在函数内部读取

  • 在函数外面定义的普通变量,函数内部默认访问不到,读取结果为null
  • 函数内部如果定义同名变量,只会使用函数内自己这个局部变量,不会去读取外部的全局变量

二、超级全局数组(超全局变量)

特点:无论在全局、函数里面、类里面,不管嵌套多深,都可以直接访问 我们前面学的: $_GET$_POST 就是超级全局数组。

所以哪怕写在函数B里面,直接写 $_POST["title"] 也可以拿到表单提交的数据。

三、示例代码解析

<?php
function A($num)
{
    echo 'FoxDevelop<br/>';
    echo $num -12 ;
    echo '<br/>';
}
// 调用函数,传不同参数
A(12);
A(122);
A(123434);

$times = 10000;  // 外部全局变量
function B()
{
    $times = 12;        // 函数内部局部变量,和外面$times互不干扰
    echo $times;        // 输出 12,不会读取外面的10000
    echo $_POST["title"]; // ✅ 超全局数组,函数内可以直接获取表单POST数据
}
B();
?>
Code language: HTML, XML (xml)

运行结果说明

  1. 调用A(12) → 输出:FoxDevelop,12-12=0
  2. 调用A(122) → 输出:FoxDevelop,122-12=110
  3. 调用A(123434) → 输出:FoxDevelop,123434-12=123422
  4. 调用B()
    • echo $times 打印的是函数内部的12不是外面的10000
    • $_POST["title"] 直接读取表单提交过来的title值,不受作用域限制

四、核心总结

  1. 普通变量:有作用域隔离,函数内默认拿不到外部全局变量
  2. 超全局数组($_GET / $_POST):全脚本任何地方都能直接访问,写在函数里也可以读取表单数据
  3. 这个特性刚好适合我们留言本项目:可以把读取留言、保存留言的逻辑封装成函数,函数内部直接用$_POST接收表单

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注