Dav*_*vid 0 php collections json laravel laravel-5
我正在调用 Halo 5 API,特别是获取竞技场中每个玩家使用的武器。我遇到的问题是,当我拨打电话时,有 7 种武器被玩家击杀 0 次,如下所示:
\n\n18 => array:3 [\xe2\x96\xbc\n "WeaponId" => 2457457776.0\n "TotalKills" => 0\n "TotalHeadshots" => 0\n ]\n 53 => array:3 [\xe2\x96\xbc\n "WeaponId" => 2015271382\n "TotalKills" => 0\n "TotalHeadshots" => 0\n ]\n 51 => array:3 [\xe2\x96\xb6]\n 48 => array:3 [\xe2\x96\xb6]\n 44 => array:3 [\xe2\x96\xb6]\n 27 => array:3 [\xe2\x96\xb6]\n 32 => array:3 [\xe2\x96\xb6]\nRun Code Online (Sandbox Code Playgroud)\n\n我想把这 7 件武器从我的收藏中拿出来:
\n\n这就是我的收藏的设置方式:
\n\n public function getArenaWeaponKills($playerArenaWeaponStats) {\n\n $results = collect($playerArenaWeaponStats->Results[0]->Result->ArenaStats->WeaponStats);\n\n $array = $results->sortByDesc(\'TotalKills\')->map(function($item, $key) {\n return [\n \'WeaponId\' => $item->WeaponId->StockId,\n \'TotalKills\' => $item->TotalKills,\n \'TotalHeadshots\' => $item->TotalHeadshots,\n ];\n });\n\n return $array;\n } \nRun Code Online (Sandbox Code Playgroud)\n\n现在我正在按(\'TotalKills\')降序对它们进行排序。有没有办法以相同的方式对它们进行排序,包括检查“TotalKills”是否>然后0?
\n您可以将 filter() 方法添加到链中:
$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,
];
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2076 次 |
| 最近记录: |