2016-10-27 19 views
0

私が行う必要があるのは、ユーザーをcountry_idで配布することです。サブコレクションを含むコレクションを生成するアルゴリズム

だから、私が持っている:私は、同じ国の中のユーザの小さなコレクションのコレクションを提供します

$users->groupBy('country_id') 

を。

小さなコレクションが異なるサイズを持っています。

メインコレクションを充填する最良の方法は?

+0

 $userGroups = $this->championship->users->groupBy($this->groupBy); // Collection of Collection // Get biggest group. $max = $this->getMaxCompetitorByEntity($userGroups); $competitors = new Collection(); for ($i = 0; $i < $max; $i++) { foreach ($userGroups as $userGroup) { $competitor = $userGroup->get($i); if (isset($competitor)) { $competitors->push($userGroup->get($i)); echo $userGroup->get($i)->association->name . "<br/>"; } } } 

あなたは正確に達成するために何をしたいですか?あなたはどんな結果を期待していますか? – nXu

+0

FrenchUser、SpanishUser、MexicanUser、ColombianUser、FrenchUser、SpanishUser、MexicanUser、ColombianUser、FrenchUser、SpanishUser、MexicanUser、ColombianUser、FrenchUser、SpanishUser、MexicanUser、ColombianUserなどのコレクションオーダーが必要です。一例、国はさまざまです。 –

+0

私はちょうど同じ国の2人のユーザーを閉じたくないようにしたい –

答えて

0

これは私の答えです。より良い方法があれば投稿してください!

/** 
* @param $userGroups 
* @return int 
*/ 
private function getMaxCompetitorByEntity($userGroups):int 
{ 
    $max = 0; 
    foreach ($userGroups as $userGroup) { 
     if (sizeof($userGroup) > $max) { 
      $max = sizeof($userGroup); 
     } 

    } 
    return $max; 
} 
関連する問題