2016-05-16 8 views
0

アリーナの各プレイヤーが使用する武器を取得しています。オブジェクトが0より大きいLaravelコレクションを並べ替える - Laravel 5.2

18 => array:3 [▼ 
    "WeaponId" => 2457457776.0 
    "TotalKills" => 0 
    "TotalHeadshots" => 0 
    ] 
    53 => array:3 [▼ 
    "WeaponId" => 2015271382 
    "TotalKills" => 0 
    "TotalHeadshots" => 0 
    ] 
    51 => array:3 [▶] 
    48 => array:3 [▶] 
    44 => array:3 [▶] 
    27 => array:3 [▶] 
    32 => array:3 [▶] 

が、私は私のコレクションのうち、それらの7つの武器を取りたい:

I'amが持つ問題は、私はその電話をかける際に、プレイヤーが0キルを持っている7つの武器はこのように、あるあります

これは私のコレクションが設定されている方法です。

public function getArenaWeaponKills($playerArenaWeaponStats) { 

     $results = collect($playerArenaWeaponStats->Results[0]->Result->ArenaStats->WeaponStats); 

     $array = $results->sortByDesc('TotalKills')->map(function($item, $key) { 
      return [ 
       'WeaponId' => $item->WeaponId->StockId, 
       'TotalKills' => $item->TotalKills, 
       'TotalHeadshots' => $item->TotalHeadshots, 
      ]; 
     }); 

     return $array; 
    } 

今(「TotalKills」)によってそれらをソートI'am降順。同じ方法でソートする方法はありますか? 'TotalKills'が> 0ならチェックしますか?

答えて

3

あなたがチェーンにフィルタ()メソッドを追加することができます。

$array = $results->sortByDesc('TotalKills') 
     ->filter(function ($item) { 
      return $item->TotalKills > 0; 
     }) 
     ->map(function($item, $key) { 
      return [ 
       'WeaponId' => $item->WeaponId->StockId, 
       'TotalKills' => $item->TotalKills, 
       'TotalHeadshots' => $item->TotalHeadshots, 
      ]; 
     }); 
+0

非常に良い解決策は – Brett

+0

はい、それは完全に働きました!ありがとう – David

関連する問題