本文介绍如何准确判断 php 中 `$_get` 是否包含至少一个查询参数,指出 `isset($_get)` 的误区,并推荐使用 `empty()` 函数进行简洁可靠的判空操作。
在 PHP 开发中,我们常需根据 URL 查询参数(如 ?id=123&sort=asc)动态调整逻辑。虽然 isset($_GET['key']) 能精准检测某个特定键是否存在,但若需判断“URL 中是否传递了任意 $_GET 参数”,则不能依赖 isset($_GET) —— 因为 $_GET 是 PHP 预定义的超全局数组,无论 URL 是否带参数,它始终存在且为数组类型,因此 isset($_GET) 永远返回 true。
✅ 正确做法是:检查 $_GET 数组是否为空。由于 $_GET 是关联数组,应使用 empty() 函数:
if (empty($_GET)) {
echo "URL 中没有查询参数";
} else {
echo "URL 中至少包含一个查询参数";
}empty() 在此场景下表现可靠:当 $_GET 为 [](空数组)时返回 true;当其包含任意键值对(如 ['id' => '5'] 或 ['' => ''])时返回 false。注意:empty() 会将 0、"0"、null、false、[]

⚠️ 注意事项:
总结:empty($_GET) 是检查任意 $_GET 参数存在的标准、高效且语义清晰的方式,应作为 PHP 表单/路由参数存在性判断的首选方案。