2017-05-10 183 views
0

我有集合的集合。得到集合中的最大集合

我想獲得集合中最大的集合。

我寫了效果很好的功能,但我敢肯定,這是可以做到更快:

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

您可以按內部集合的計數對集合進行排序,然後只取第一個項目(最大的組)。

// 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(); 

它在執行時不會比現在的解決方案「更快」,但是它的編寫是爲了充分利用集合提供的功能。

+0

我喜歡它!可能會這樣做 –