从Laravel资源集合中删除null

时间:2019-09-01 23:57:27

标签: php json laravel eloquent laravel-resource

我使用resources构建了Laravel API。它返回collection以及一些额外的元数据。我想删除null项而不丢失格式化的JSON响应。 注意:我尝试了filter方法,但是它从JSON响应中删除了“数据”和“ extra_meta”。换句话说,它对collection进行了重大更改,而不仅仅是删除了null个项目。

{
    "data": [
        {
            "data_1": "some data"
        },
        {
            "data_1": "some data"
        },
        null,
        null,
        null,
        null,
        null,
        null
    ],
    "extra_meta": {
        "meta_1": "some meta"
    }
}

这是使用resource

的简化代码
       return $collection = someResource::collection($somthing)->additional([
            'extra_meta' => [
                'meta_1' => $request->metaInfo,
            ],
        ]);

1 个答案:

答案 0 :(得分:0)

@Mano。

在php文档中,如果您这样使用,则我们有一个名为array_filter()的函数:

echo (array_filter($data, function($value) { return !is_null($value) && $value !== ''; }))

函数array_filter()在没有回调(第二个参数)的情况下使用时,会删除数组中的所有空键,但是您可以像上面的代码一样自定义函数以实现回调,在上面我放置了仅返回内容的函数不为null且与“”不同。

希望我能帮到你。

编辑:我建议您将数据数组放在单独的变量中

$data = <json response>['data'];

使用此功能后,

https://www.php.net/manual/en/function.array-filter.php处查看PHP文档