PHP中$_GET外部变量空值与非空判断代码不生效如何解决?
问题根因
- 代码未将
$_GET['test']赋值给$test变量,$test始终处于未定义状态,$test === NULL判断永远为真,因此所有请求都命中第一个分支。 - 当访问
/test.php?test时,$_GET['test']实际存在,值为空字符串""而非NULL,原有判断逻辑不符合PHP接收URL参数的规则。
正确实现代码
// 用null合并运算符安全获取参数,参数不存在时默认赋值为null $test = $_GET['test'] ?? null; if (isset($test)) { // 去除两端空白后判断是否为空,可根据业务需求调整判断规则 if (trim($test) === '') { echo '变量为空'; } else { // 输出外部参数时加htmlspecialchars避免XSS安全风险 echo '变量不为空:' . htmlspecialchars($test); } }
运行验证
- 访问
/test.php?test:输出 变量为空,符合需求 - 访问
/test.php?test=test:输出 变量不为空:test,符合需求
内容的提问来源于stack exchange,提问作者YKKY
相关产品推荐
相关产品推荐

