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

Laravel 5.6:如何仅返回含有效值数组并过滤空数组

在Laravel 5.6中过滤数组中的NULL值

嘿,在Laravel 5.6里实现仅保留有效值、过滤掉NULL值的数组其实很容易,我给你分享几个实用的方案,根据你的数组结构选就行:

方案1:使用Laravel集合(推荐)

Laravel的集合类提供了非常便捷的数组操作方法,处理这种过滤需求特别顺手。假设你的原始数组是这样的:

$originalArray = [
    'username' => 'samtoya',
    'bio' => null,
    'email' => 'sam@example.com',
    'phone' => null,
];

你可以通过以下代码过滤掉所有NULL值的元素:

// 转换为集合 -> 过滤NULL值 -> 转回数组
$filteredArray = collect($originalArray)
    ->filter(function ($value) {
        // 只保留非NULL的值
        return !is_null($value);
    })
    ->toArray();

如果你的数组是多维数组(比如包含子数组),想要同时过滤子数组里的NULL值,还可以嵌套使用集合:

$originalMultiArray = [
    ['id' => 1, 'title' => 'First Post', 'content' => null],
    null,
    ['id' => 2, 'title' => null, 'content' => 'Hello World'],
];

$filteredMultiArray = collect($originalMultiArray)
    // 先过滤掉整个为NULL的元素
    ->filter(function ($item) {
        return !is_null($item);
    })
    // 再处理每个子数组,过滤其中的NULL值
    ->map(function ($subArray) {
        return collect($subArray)->filter(function ($value) {
            return !is_null($value);
        })->toArray();
    })
    ->toArray();

方案2:使用原生PHP函数

如果你习惯用原生PHP,array_filter也能实现,但要注意默认的array_filter会过滤掉所有“空值”(比如false、0、''这些),所以如果只想过滤NULL值,必须传入自定义回调:

$filteredArray = array_filter($originalArray, function ($value) {
    return !is_null($value);
});

小提示

  • 如果你想连空字符串、false这些也一起过滤,可以直接用collect($originalArray)->filter()->toArray(),因为Laravel的filter()方法默认会移除所有“空”值(符合empty()判断的)。
  • 要是你的数组元素是对象,只需要调整回调里的判断逻辑就行,比如判断对象的某个属性是否为NULL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:51:56