判断变量是否为空数组应使用is_array($var) && count($var) === 0,既确保类型为数组又确认元素数为0;或用$var === [](需变量已定义);避免单独使用empty()或is_null()。

要判断一个变量是不是空数组(即 []),而不是 null、false、0、"" 等其他“空值”,关键在于同时校验类型和内容——既要确认它是数组,又要确认它不含任何元素。
用 is_array() 和 count() 组合判断
这是最推荐的方式,安全、明确、无歧义:
-
is_array($var)确保变量确实是数组类型,排除null、字符串、对象等干扰; -
count($var) === 0精确检查元素个数是否为 0,不把0或"0"当作“空”误判; - 组合写法:
if (is_array($var) && count($var) === 0)。
✅ 优点:语义清晰,类型安全,兼容所有 PHP 版本,不会触发警告。
用严格比较 === []
PHP 支持直接与空数组字面量比较:
-
if ($var === [])能准确识别出变量是否就是空数组; - 它不会把
null、false、0、""或未定义变量当作空数组; - 注意:该方式要求变量已定义,否则会报
Notice: Undefined variable。
✅ 优点:性能高、写法简洁;⚠️ 缺点:不适用于可能未声明的变量,需前置 isset() 或先确保变量存在。
避免单独使用 empty()
empty($var) 对空数组返回 true,但它对 null、0、false、"" 同样返回 true,无法区分这些状态。
- 例如:
$var = 0;和$var = [];都会让empty($var)返回true; - 所以仅靠
empty()不能回答“是不是空数组”,只能回答“是不是空值”。
区分 is_null() 和空数组
is_null($var) 只检测是否为 null,对空数组 [] 返回 false:
-
is_null([])→false; -
is_null(null)→true; - 它和空数组判断是两个独立问题,不要混用。
若你实际想问的是“变量是否为 null 或空数组”,那应写成:!is_array($var) || count($var) === 0(先非数组即视为不满足,再检查数组长度)。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











