2016-05-16 5 views
0

Я звоню в API Halo 5, в частности, получая оружие, используемое каждым игроком в Арене. Проблема I'am имея, когда я делаю этот призыв, есть 7 оружия, которые имеют 0 убивают игрок, как это:Сортировка коллекции Laravel, где объект больше 0 - 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; 
    } 

Сейчас I'am сортируя их по («») TotalKills порядке убывания. Есть ли способ отсортировать их таким же образом. Включая проверку, если «TotalKills» is> then 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

Смежные вопросы