2017-05-10 21 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

私はそれが好きです!おそらくこのようにするだろう –

関連する問題