我有一个收藏集。
我想获得该系列中最大的收藏品。
我写了一个效果很好的函数,但我很确定它可以更快地完成:
private function getMaxFightersByEntity($userGroups): int
{
$max = 0;
foreach ($userGroups as $userGroup) { // $userGroup is another Collection
if (count($userGroup) > $max) {
$max = count($userGroup);
}
}
return $max;
}
我很确定管理收藏有更好的方法,但实际上并不知道。
任何人都有更好的解决方案???
答案 0 :(得分:1)
您可以按内部集合的计数对集合进行排序,然后只取第一个项目(最大的组)。
// sortByDesc: sort the groups by their size, largest first
// first: get the first item in the result: the largest group
// count: get the size of the largest group
return $userGroups
->sortByDesc(function ($group) {
return $group->count();
})
->first()
->count();
它不会比执行时的当前解决方案“更快”,但它是为了利用集合提供的功能而编写的。