2016-05-02 14 views
1

Ich arbeite an einer Halo 5 API. Und ich sammle Waffenkills für jeden Spieler in der Arena.Hol dir Waffen ID aus der API (Laravel 5.2)

Zum Beispiel insgesamt Kills für meine Magnum zu bekommen, ist es das, was ich tue:

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

     return $array; 
} 

Und dies ist die Ausgabe:

Halo Output

Das Problem dabei ist jeder Spieler Waffenordnung ist anders. So zum Beispiel, wenn ich Ausgang dieses, erhalte ich eine Reihe von Waffen für diesen Spieler (in diesem Fall mich) verwendet:

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

Und dies ist die Ausgabe:

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 

Für einen anderen Spieler Array [0] wird eine andere Waffe enthalten Und so, wenn ich dies tun in meiner Klinge:

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

für einen anderen Spieler, $ MagnumKills wird eine andere Waffe bedeuten, aber ich Ich werde immer noch unter Magnum sein.

Ich hoffe ihr versteht, ich muss irgendwie den Namen der Waffe und das Bild in der Tabelle an die richtigen Waffen töten.

Antwort

1

Verwenden Sie die Hilfsklasse Laravel Collection.

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

ya, gab mir eine Reihe von ALLEN Waffen IDs. Ich werde versuchen, sie jetzt zuzuordnen. – David

+0

Ich bearbeitete meine Frage – David

0

Haben Sie versucht keyBy Sammlung Methode? Ihre Funktion wird so aussehen:

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

überprüfe meine Frage erneut, ich bearbeitete sie – David

+0

Verwenden Sie die Daten, die von meiner Funktion auf diese Weise zurückgegeben werden (Nehmen wir an, sie ist der '$ stats' Variablen zugewiesen und' $ magnumId' ist StockId von Magnum. Beispiel für die Verwendung: '$ magnumStats = $ stats [$ magnumId]; echo 'Magnum tötet:'. $ magnumStats ['TotalKills'];'. – starky

+0

Wenn ich die obige Methode mit keyBy benutze, erhalte ich einen Fehler: ** Objekt des Typs kann nicht verwendet werden stdClass als Array ** – David

Verwandte Themen