我想使用Laravel 5.1 Collection's Unique方法从嵌套对象中过滤唯一ID。
给定数据结构
{
"key1": [
{"id": 1},
{"id": 1}
],
"key2": [
{"id": 1},
{"id": 2}
]
}
我想返回相同的数据结构,其中重复id 1
已从"键1"中删除。
我想使用$unique = $collection->unique('id');
,但这似乎并不像我一样适用于嵌套数据结构。
所以我想使用$ collection
$input = $request->all();
$collection = collect($input);
$collection->each(function($obj, $key) {
//$key is "key1", "key2"
//obj is the associated array of objects containing IDs
})->unique('id');
我不太清楚如何构建它。
结果结构应为:
{
"key1": [
{"id": 1}
],
"key2": [
{"id": 1},
{"id": 2}
]
}
答案 0 :(得分:6)
$collection = $collection->map(function ($array) {
return collect($array)->unique('id')->all();
});
答案 1 :(得分:1)
如果您有数字列表,则可以使用此代码
$dataList = [1,2,4,5,3,2,1,98,1,2,4,5,6];
$dataList = collect( $dataList )->unique();
您将获得所有唯一列表。
[1,2,4,5,3,98,6]
答案 2 :(得分:1)
如果你的数据结构是单层嵌套的,无论是数组还是对象,都很简单
kubectl
完成工作。