【问题标题】:Get weapon ID from API (Laravel 5.2)从 API 获取武器 ID (Laravel 5.2)
【发布时间】:2016-08-27 19:53:31
【问题描述】:

我正在开发 Halo 5 API。我正在为竞技场中的每个玩家收集武器击杀数。

例如,要获得我的 Magnum 的总击杀数,我会这样做:

 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);

这是输出:

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

对于其他玩家,array[0] 将包含不同的武器 因此,如果我在刀片中执行此操作:

 <td style="width: 25%;">
            <img src="{{ json_decode($FlagnumImage) }}" class="img-responsive" style=" width: 50%; height: auto;">  <!-- weapon image -->
        </td>
        <td>{{ json_decode($Flagnum) }}</td>        <!-- weapon name -->
        <td>{{ json_decode($MagnumKills) }}</td>    <!-- weapon kills -->

对于其他玩家来说,$MagnumKills 将意味着不同的武器,但它仍会在 Magnum 之下。

希望你们理解,我需要以某种方式将表格中的武器名称和图像附加到正确的武器击杀数上。

【问题讨论】:

    标签: php json api laravel laravel-5.2


    【解决方案1】:

    尝试使用 Laravel Collection 辅助类。

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

    【讨论】:

    • 是的,它给了我所有武器 ID 的数组。我现在将尝试分配它们。
    【解决方案2】:

    你试过keyBy收藏的方法吗? 您的函数将如下所示:

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

    【讨论】:

    • 以这种方式使用我的函数返回的数据(假设它已分配给$stats 变量,$magnumId 是 magnum 的 StockId。使用示例:$magnumStats = $stats[$magnumId]; echo 'Magnum kills:' . $magnumStats['TotalKills'];
    • 如果我使用上面的方法和keyBy,我得到一个错误:不能使用stdClass类型的对象作为数组
    • @David 尝试将 $magnumStats['TotalKills'] 替换为 $magnumStats-&gt;TotalKills
    • starkky,我的意思是公共函数方法不起作用,我还没到 $magnumStats。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 2016-06-19
    • 2016-07-25
    • 2016-01-20
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多