2017-05-10 7 views
0

Ich habe eine Sammlung von Sammlung.Get Größte Sammlung in einer Sammlung von Sammlung

Ich möchte die größte Sammlung innerhalb der Sammlung bekommen.

schrieb ich eine Funktion, die gut funktioniert, aber ich bin mir ziemlich sicher, dass es viel schneller durchgeführt werden kann:

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

Ich bin mir ziemlich sicher, dass es eine Sammlung Verwaltung besserer Weg ist, aber nicht wirklich es wissen.

Wer hat eine bessere Lösung ???

Antwort

1

Sie können die Sammlung nach der Anzahl der inneren Sammlungen sortieren und dann das erste Element (größte Gruppe) auswählen.

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

Es wird nicht „schneller“ als die aktuelle Lösung in der Ausführungszeit, aber es steht geschrieben Vorteil der Funktionen von Sammlungen zur Verfügung gestellt zu nehmen.

+0

Ich mag es! Werde es wahrscheinlich so machen –

Verwandte Themen