获取集合中的Biggest集合

时间:2017-05-10 00:27:47

标签: laravel collections

我有一个收藏集。

我想获得该系列中最大的收藏品。

我写了一个效果很好的函数,但我很确定它可以更快地完成:

private function getMaxFightersByEntity($userGroups): int
{
    $max = 0;
    foreach ($userGroups as $userGroup) { // $userGroup is another Collection
        if (count($userGroup) > $max) {
            $max = count($userGroup);
        }
    }
    return $max;
}

我很确定管理收藏有更好的方法,但实际上并不知道。

任何人都有更好的解决方案???

1 个答案:

答案 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();

它不会比执行时的当前解决方案“更快”,但它是为了利用集合提供的功能而编写的。