最常用且最稳妥的方式是用 empty() 判断空数组,它对空数组返回 true;count($arr) === 0 语义明确但稍冗长;isset() 和 == [] 不推荐,因前者恒为 true,后者存在类型转换风险。

定义空数组后,直接用 empty() 就能准确判断它是否为空,这是最常用也最稳妥的方式。
用 empty() 判断最简单可靠
empty() 是 PHP 内置函数,专门用来检测变量是否“为空”——包括空数组、null、false、0、""(空字符串)等。对空数组来说,它返回 true,非常直观。
- $arr = [];
var_dump(empty($arr)); // 输出 bool(true) - $arr = array();
var_dump(empty($arr)); // 同样输出 bool(true) - 即使数组里有键但没值(如 $arr = ['name' => '']),只要值是空字符串,empty() 仍返回 true;但若键对应的是 0 或 false,则也会被判定为空——这点要注意语义场景
count() 也能用,但稍显啰嗦
count() 返回数组元素个数,空数组结果为 0。所以 count($arr) === 0 也可判断。
- $arr = [];
if (count($arr) === 0) { echo "是空数组"; } - 优点是语义明确,适合强调“元素数量”逻辑的场景
- 缺点是比 empty() 多写几个字符,且对非数组类型(如 null)会触发 warning,而 empty() 安全无警告
避免用 isset() 或 == [] 直接比较
isset() 检查变量是否已声明且不为 null,空数组是已声明且不为 null 的,所以 isset($arr) 总是返回 true,不能用于判空。
- $arr = [];
var_dump(isset($arr)); // bool(true),不是你想要的结果 - 用 $arr == [] 看似合理,但 PHP 中数组比较是“松散”的,可能因类型隐式转换出意外结果;严格比较 $arr === [] 虽可行,但只适用于字面量空数组,无法处理动态生成或含空格键的数组,实用性低
实际写法推荐
日常开发中,90% 场景直接用 empty($arr) 即可。如果后续还要用到数组长度,可以先 count 一次再复用变量,不必重复调用。
- if (empty($data)) { /* 处理空数据 */ }
- $len = count($data);
if ($len === 0) { /* 空数组 */ } else { /* 非空,$len 可继续用 */ }
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











