2016-05-16 46 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