2016-05-16 50 views
0

我正在調用Halo 5 API,特別是讓每個玩家在Arena中使用的武器。有我'的問題是,當我打這通電話,有7個武器由玩家有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從我的收藏:

這是我收集的設置方式:

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」)降序排序它們。有沒有辦法以相同的方式對它們進行排序?包括檢查'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