一、普通变量的作用域
普通全局变量不能直接在函数内部读取
- 在函数外面定义的普通变量,函数内部默认访问不到,读取结果为
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)
运行结果说明
- 调用
A(12)→ 输出:FoxDevelop,12-12=0 - 调用
A(122)→ 输出:FoxDevelop,122-12=110 - 调用
A(123434)→ 输出:FoxDevelop,123434-12=123422 - 调用
B():echo $times打印的是函数内部的12,不是外面的10000$_POST["title"]直接读取表单提交过来的title值,不受作用域限制
四、核心总结
- 普通变量:有作用域隔离,函数内默认拿不到外部全局变量
- 超全局数组(
$_GET/$_POST):全脚本任何地方都能直接访问,写在函数里也可以读取表单数据 - 这个特性刚好适合我们留言本项目:可以把读取留言、保存留言的逻辑封装成函数,函数内部直接用
$_POST接收表单
Previous: PHP 获取表单数据
Next: PHP数组