判断PHP数组所有元素都不为空需满足数组非空且每个值为真:常用array_filter()比对长度;需保留0时用显式遍历+定制条件;函数式可用array_reduce();严格场景应枚举空值避免empty()误判。

用 array_filter() + count() 判断(最常用)
利用 `array_filter()` 默认过滤掉所有“falsy”值(包括 `''`、`null`、`false`、`0`、`[]` 等),再比对过滤前后数量是否一致:
- 如果 原数组长度 === 过滤后数组长度,说明没被删掉任何元素 → 所有元素都不为空
- 代码示例:
count($arr) === count(array_filter($arr)) - ⚠️ 注意:该方式把
0和'0'都当空处理。若业务中0是有效值(如商品库存为 0),就不能直接用默认 `array_filter()`
显式遍历 + empty() 校验(控制力最强)
适合需要明确中断逻辑或自定义“空”的定义(比如保留 0,但排除 '' 和 null):
- 初始化
$allNonEmpty = true - 用
foreach遍历每个$value,一旦遇到empty($value)为true,立刻设$allNonEmpty = false并break - 循环结束后,
$allNonEmpty为true即表示全部非空 - 若需保留数字
0,可改用:!is_null($value) && $value !== '' && !is_array($value) || !empty($value)等组合判断
用 array_reduce() 归约判断(函数式风格)
一行表达逻辑“所有元素都非空”,简洁且无中间变量:
- 写法:
array_reduce($arr, fn($carry, $item) => $carry && !empty($item), true) - 初始值为
true,每轮与!empty($item)做逻辑与,最终结果为true表示全非空 - 同样受
empty()对0、'0'的判定影响,需按需调整条件
严格空值枚举(避免 empty() 误判)
当你明确只接受某些“空”类型(比如只认 null、''、false,但 0 和 [] 是合法值):
立即学习“PHP免费学习笔记(深入)”;
- 定义允许的空值集合:
$emptyValues = [null, '', false]; - 遍历检查每个
$value是否 不在 该集合中:!in_array($value, $emptyValues, true) - 配合
array_reduce或循环,确保每个值都满足该条件 - 这样就能避开
empty([0]) === true这类陷阱



















