0

我使用resources. 它返回了collection一些额外的元数据。我想在不丢失格式化响应null的情况下删除项目。JSON注意:我尝试filter了方法,但它从JSON响应中删除了“data”和“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,
            ],
        ]);
4

1 回答 1

0

@马诺。

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

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

该函数array_filter()在没有回调(第二个参数)的情况下使用时会删除数组中的所有空键,但是您可以像上面的代码一样自定义应用回调的函数,其中我放置了一个函数,该函数仅返回非空且不同于' '。

希望我帮助了你。

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

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

在此之后使用该功能,

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

于 2019-09-02T00:45:04.023 回答