2016-05-02 3 views
1

Я работаю над API Halo 5. И я собираю убийства оружия для каждого игрока в Арене.Получить идентификатор оружия от API (Laravel 5.2)

Например, чтобы получить общее количество убийств для моего Magnum, это то, что я делаю:

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

     return $array; 
} 

И это выход:

Halo Output

Проблема с этим каждый игрок порядок оружия отличается. Так, например, если я выходной это, я получаю массив оружия, используемого для этого игрока (в данном случае я):

$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 

Для другого игрока , массив [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 будет означать другое оружие, но я t будет под Магнумом.

Надеюсь, вы, ребята, понимаете, мне нужно как-то прикрепить оружие и изображение в таблице к правильному оружию.

ответ

1

Попробуйте использовать вспомогательный класс коллекции Laravel.

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

ya, это дало мне массив ВСЕХ идентификаторов оружия. Я собираюсь попытаться назначить их сейчас. – David

+0

Я отредактировал мой вопрос – David

0

Вы попробовали keyBy коллекционный метод? Ваша функция будет выглядеть так:

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

проверить мой вопрос снова, я его отредактировал – David

+0

Используйте данные, возвращаемые моей функцией таким образом (предположим, что он назначен переменной '$ stats', а' $ magnumId' - StockId of magnum. Пример использования: '$ magnumStats = $ stats [$ magnumId]; echo 'Magnum kill:'. $ magnumStats ['TotalKills'];'. – starky

+0

, если я использую метод выше с keyBy, я получаю сообщение об ошибке: ** Нельзя использовать объект типа stdClass as array ** – David

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