php 5.6 中三元运算符不能直接判断空数组,需配合 empty()、count() 或 is_array() 与 empty() 组合使用;推荐 empty($arr) 最简洁安全,count($arr)===0 更精确,is_array($arr) && empty($arr) 最严谨。

PHP 5.6 中,三元运算符本身**不能直接“判断”空数组**,它只是根据条件表达式的真假返回对应值。真正起作用的是你写在问号前面的**判断逻辑**——这个逻辑必须能准确识别“空数组”,然后三元运算符才据此选择分支。
用 empty() 最简洁安全
这是 PHP 5.6 最常用、最推荐的方式。empty() 对空数组 [] 返回 true,且对未定义变量也不报错,非常稳妥:
-
写法示例:
$str = empty($arr) ? '无数据' : implode(',', $arr); - 若
$arr = [],结果为'无数据' - 若
$arr = ['a', 'b'],结果为'a,b'
用 count() 更精确(只看元素数量)
如果业务上严格要求“只要没元素就是空”,不希望把 0、false、"" 等其他假值误判为“空数组”,就用 count():
-
写法示例:
$str = count($arr) === 0 ? '' : implode('|', $arr); - 注意用
=== 0(严格等于),避免类型转换问题 - 该方法对非数组变量调用会触发警告,所以前提是已知
$arr是数组或已做过类型校验
加 is_array() 防止类型误判
当不确定变量是否一定是数组时(比如来自用户输入或接口响应),仅用 empty() 可能将字符串 "" 或 null 也当作“空数组”处理。此时应组合判断:
-
写法示例:
$str = is_array($arr) && empty($arr) ? '空数组' : (is_array($arr) ? implode(',', $arr) : '非数组值'); - 先确认是数组,再判断是否为空,逻辑更严谨
- 三元运算符在这里仍只负责“选值”,真正的判断由
is_array() && empty()完成
避免踩坑:这些写法在 PHP 5.6 不可靠
以下看似简短,但容易出错,不建议在生产环境使用:
-
!$arr—— 会把0、"0"、false全部当成“空”,不专指数组 -
$arr == false—— 类型强制转换不可控,行为难以预测 -
isset($arr) ? ... : ...——isset([])是true,无法区分非空/空数组
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











