PHP中empty与isset检测变量差异详解,是哪些高频考点?
- 内容介绍
- 文章标签
- 相关推荐
本文共计869个文字,预计阅读时间需要4分钟。
python判断变量是否存在以及其值是否为0variable_name=example_var
尝试访问变量,如果变量不存在将抛出NameErrortry: # 判断变量值是否为0 if eval(variable_name)==0: result=变量存在,且其值为0 else: result=变量存在,但其值不为0except NameError: result=变量不存在
print(result)
- 常见错误现象:
if (!empty($_GET['id'])) { ... }—— URL 是?id=0时,逻辑直接跳过,但 0 是合法 ID - 正确姿势:
if (isset($_GET['id']) && $_GET['id'] !== ''),再按需校验类型或范围 - PHP 7.4+ 更简洁写法:
$id = $_GET['id'] ?? null;,语义等价于isset()判断 + 默认值赋值
empty() 不是“非空判断”,而是“语义为空判断”
empty() 的设计目标是快速筛掉业务上“无意义”的值,但它把太多东西都当成“空”了:未定义变量、0、"0"、false、null、""、[] 全部返回 true。它不区分“没传”和“传了零”。
本文共计869个文字,预计阅读时间需要4分钟。
python判断变量是否存在以及其值是否为0variable_name=example_var
尝试访问变量,如果变量不存在将抛出NameErrortry: # 判断变量值是否为0 if eval(variable_name)==0: result=变量存在,且其值为0 else: result=变量存在,但其值不为0except NameError: result=变量不存在
print(result)
- 常见错误现象:
if (!empty($_GET['id'])) { ... }—— URL 是?id=0时,逻辑直接跳过,但 0 是合法 ID - 正确姿势:
if (isset($_GET['id']) && $_GET['id'] !== ''),再按需校验类型或范围 - PHP 7.4+ 更简洁写法:
$id = $_GET['id'] ?? null;,语义等价于isset()判断 + 默认值赋值
empty() 不是“非空判断”,而是“语义为空判断”
empty() 的设计目标是快速筛掉业务上“无意义”的值,但它把太多东西都当成“空”了:未定义变量、0、"0"、false、null、""、[] 全部返回 true。它不区分“没传”和“传了零”。

