从API获取武器ID(Laravel 5.2)

时间:2016-05-02 22:43:34

标签: php json api laravel laravel-5.2

我正在研究Halo 5 API。我正在为竞技场中的每个玩家收集武器杀伤。

例如,为了获得我的Magnum的总杀戮,这就是我所做的:

[SWF] FlexMobileWorkerTest.swf - 3,697,251 bytes after decompression
Pre Initialize
Initialize
Creation Complete
Application Complete
Worker is running
[SWF] FlexMobileWorkerTest.swf - 3,697,251 bytes after decompression

这是输出:

Halo Output

这个问题是每个玩家武器的顺序都不同。 因此,例如,如果我输出这个,我得到一个用于该玩家的武器数组(在这种情况下是我):

 public function getPlayerArenaArray($playerArenaStats) {
      $array = [];
      $array['MagnumKills'] = $playerArenaStats->Results[0]->Result->ArenaStats->WeaponStats[0]->TotalKills;

      return $array;
 }

这是输出:

$ex = $array['MagnumKills'] = $playerArenaStats->Results[0]->Result->ArenaStats->WeaponStats;
dd($ex);

对于其他玩家,数组[0]将包含不同的武器 所以,如果我在我的刀片中这样做:

array:53 [▼
  0 => {#1576 ▼
    +"WeaponId": {#1577 ▼
      +"StockId": 4096745987.0
      +"Attachments": []
    }
    +"TotalShotsFired": 46355
    +"TotalShotsLanded": 21245
    +"TotalHeadshots": 2212
    +"TotalKills": 2762
    +"TotalDamageDealt": 393650.91875947
    +"TotalPossessionTime": "P1DT1H36M25.5502S"
  }
  1 => {#1578 ▶}
  2 => {#1580 ▶}
  3 => {#1582 ▶}
  4 => {#1584 ▶}
  5 => {#1586 ▶}
  6 => {#1588 ▶}
  7 => {#1590 ▶}
  8 => {#1592 ▶}
  9 => {#1594 ▶}
  10 => {#1596 ▶}

...... and so on

对于另一名玩家,$ MagnumKills将意味着一种不同的武器,但它仍将在Magnum之下。

我希望你们明白,我需要以某种方式将表中的武器名称和图像附加到正确的武器杀伤中。

2 个答案:

答案 0 :(得分:1)

尝试使用Laravel Collection助手类。

collect($array)->pluck('WeaponId.StockId');

答案 1 :(得分:0)

您是否尝试过keyBy集合的方法? 你的功能看起来像这样:

public function getPlayerArenaArray($playerArenaStats) {
    return collect($playerArenaStats->Results[0]->Result->ArenaStats->WeaponStats)->keyBy(
        function($stats) {
            return $stats['WeaponId']['StockId'];
        }
    );
}