我使用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,
],
]);
答案 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文档