You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置array_filter使其允许保留null、空值与0等有效内容

问题原因

PHP的array_filter函数如果不传入自定义回调,默认会按照弱类型规则过滤所有等价于false的值,其中就包括你需要保留的null、空字符串、0,这就是你使用默认逻辑无法达到预期的原因。

解决方法

你需要传入自定义回调函数,明确指定需要保留的元素规则,回调返回true时对应元素就会被保留,替换你原有代码中前两行的array_filter调用即可:

// 自定义过滤回调,可按需调整保留规则
$customFilter = function ($value) {
    // 明确保留null、空字符串、整数0、字符串0
    if (in_array($value, [null, '', 0, '0'], true)) {
        return true;
    }
    // 其余元素可根据业务需求判断是否保留,这里示例保留所有非空值,不需要过滤的话直接写return true即可
    return !empty($value);
};

// array_values用于重置数组索引,避免过滤后索引不连续,导致后续array_map拼接时元素对应错位
$student = array_values(array_filter($request->student, $customFilter));
$teacher = array_values(array_filter($request->teacher, $customFilter));

如果你的业务不需要过滤任何提交的student、teacher数组元素,直接去掉array_filter调用即可,不需要额外写回调逻辑。

内容的提问来源于stack exchange,提问作者Jin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:45:01