我有以下收藏
Collection {#430 ▼
#items: array:54 [▼
0 => {#435 ▼
+"name": "Persona 5"
+"cover": "cover_persona-5_playstation-3.png"
+"bio": "This is a syno"
+"all_nb_rank": null
+"platform_name": "Sony Playstation 3"
+"tag_name": "RPG"
+"developper": "Deep Silver"
+"publisher": "Atlus"
}
1 => {#437 ▼
+"name": "Persona 5"
+"cover": "cover_persona-5_playstation-3.png"
+"bio": "This is a syno"
+"all_nb_rank": null
+"platform_name": "Sony Playstation 3"
+"tag_name": "Turn based"
+"developper": "Deep Silver"
+"publisher": "Atlus"
}
2 => {#436 ▼
+"name": "Persona 5"
+"cover": "cover_persona-5_playstation-3.png"
+"bio": "This is a syno"
+"all_nb_rank": null
+"platform_name": "Sony Playstation 3"
+"tag_name": "Simulation"
+"developper": "Deep Silver"
+"publisher": "Atlus"
}
//
我想进入另一个集合“tag_name”行,然后从主集合中删除它,并删除重复的值,以便得到这样的东西:
Collection {#430 ▼
#items: array:1 [▼
0 => {#435 ▼
+"name": "Persona 5"
+"cover": "cover_persona-5_playstation-3.png"
+"bio": "This is a syno"
+"all_nb_rank": null
+"platform_name": "Sony Playstation 3"
+"developper": "Deep Silver"
+"publisher": "Atlus"
}
Collection {#490 ▼
#items: array:3 [▼
0 => "RPG"
1 => "Turn based"
2 => "Simulation"
]
}
我已经设法通过使用“tag_name”行进入另一个集合
$tags = $collection->pluck('tag_name');
我还计划使用unique()集合方法来合并重复的值。
但是我不知道我应该如何处理,以便从主收藏中删除“tag_name”。
我尝试使用forget()和slice()方法,但不起作用。我知道我可以将其制作成一个简单的数组,然后使用PHP unset()函数,但我想知道如何使用Laravel收集方法来实现
方法的作用正是您所需要的。它从集合中删除一个或多个键:
$persona = collect([
'name' => 'Persona 5',
'cover' => 'cover_persona-5_playstation-3.png',
'bio' => 'This is a syno',
'all_nb_rank": nul',
'platform_name' => 'Sony Playstation 3',
'tag_name' => 'RPG',
'developper' => 'Deep Silver',
'publisher' => 'Atlus'
]);
$result = $persona->except(['tag_name']);
$personasWithOutTagName = $personas->except(['tag_name']);
这将导致:
[
'name' => 'Persona 5',
'cover' => 'cover_persona-5_playstation-3.png',
'bio' => 'This is a syno',
'all_nb_rank": nul',
'platform_name' => 'Sony Playstation 3',
'developper' => 'Deep Silver',
'publisher' => 'Atlus'
];
对角色集合中的所有项目执行此操作时,您可以执行以下操作:
$result = $personas->map(function ($person) {
return collect($person)->except(['tag_name'])->all();
});
$result
将是除标记名
键之外的所有角色的集合。
您可以通过做一些小动作来使用forget()
,因为forget()
只对集合对象有效。
$collections = $collections->map(function ($c) {
return collect($c)->forget('tag_name');
});
return $collections;
分区方法可用于将集合分成一个或多个集合,具体取决于真值测试的逻辑。将其与列表方法一起使用,如下面的示例所示:
https://laravel.com/docs/5.5/collections#method-分割
另一个选项是mapToGroups方法。
https://laravel.com/docs/5.5/collections#method-映射组