在我的laravel请求中,我发送的数据如下所示。。
{
"user_id":13,
"location":null,
"about":"This Is About the user",
"avatar":[],
"users":[
{
"user_name":"John",
"age":"30",
},
{
"user_name":"Jessy",
"age":"30",
}
]
}
所有请求键都可以为null或包含一个值(数组或字符串(,所以我只想过滤有值的键。
预期输出:
{
"user_id":13,
"about":"This Is About the user",
"users":[
{
"user_name":"John",
"age":"30",
},
{
"user_name":"Jessy",
"age":"30",
}
]
}
我试过
$userRequestData = $request->only([
'location','about','avatar','users'
]);
$Data = array_filter($userRequestData, 'strlen');
但只有当请求只有字符串值时,它才有效。。。
即使它是字符串或数组,我如何过滤它?
如果不将'strlen'
参数传递给array_filter,它将过滤出falsy
值:
$request = [
"user_id"=>13,
"location"=>null,
"about"=>"This Is About the user",
"avatar"=>[],
"users"=>[
[
"user_name"=>"John",
"age"=>"30",
],
[
"user_name"=>"Jessy",
"age"=>"30",
]
]
];
将成为
$request = [
"user_id"=>13,
"about"=>"This Is About the user",
"users"=>[
[
"user_name"=>"John",
"age"=>"30",
],
[
"user_name"=>"Jessy",
"age"=>"30",
]
]
];
array_filter 文档
在你的例子中,你可以这样做:
$userRequestData = array_filter($userRequestData);
您可以使用集合过滤空值
collect(request()->all())->filter()
或
$result = collect(request()->all())->filter(function ($request){
return is_string($request)&&!empty($request)||is_array($request)&&count($request);
});
获取阵列
$result = collect(request()->all())->filter()->toArray()
或用于自定义
$result = collect(request()->all())->filter(function ($request){
return is_string($request)&&!empty($request)||is_array($request)&&count($request);
})->toArray();