2016-10-27 4 views
0

Ich versuche herauszufinden, wie man aus einer Reihe von Arrays die höchste "Stufe" erhält: "VALUE" und bekomme Zugriff auf das gesamte Array dessen In. In diesem Fall die höchste "Stufe" : "DIAMANT".Ein Array in JSON bekommen PHP

Liste der Tiers (höchsten zum niedrigsten):

HERAUSFORDERER

MASTER

DIAMOND

PLATINUM

GOLD

SILVER

BRONZE

Ich weiß nicht, wie ich jedes Array-Daten die höchste Stufe zu finden und verwenden Sie diese Ebene, um Zugriff auf die anderen Daten nach diesem Array zu erhalten. Hier

ist die JSON-Datei

{ 
    "29161162": [ 
     { 
     "name": "Graves's Inquisitors", 
     "tier": "DIAMOND", 
     "queue": "RANKED_SOLO_5x5", 
     "entries": [ 
      { 
       "playerOrTeamId": "29161162", 
       "playerOrTeamName": "ForsakenHound", 
       "division": "III", 
       "leaguePoints": 50, 
       "wins": 234, 
       "losses": 190, 
       "playstyle": "NONE", 
       "isHotStreak": false, 
       "isVeteran": false, 
       "isFreshBlood": false, 
       "isInactive": false 
      } 
     ] 
     }, 
     { 
     "name": "Leona's Dervish", 
     "tier": "PLATINUM", 
     "queue": "RANKED_TEAM_5x5", 
     "entries": [ 
      { 
       "playerOrTeamId": "TEAM-4e132820-393f-11e6-8b2a-c81f66daeaa4", 
       "playerOrTeamName": "Raging Turtles Alpha", 
       "division": "II", 
       "leaguePoints": 40, 
       "wins": 12, 
       "losses": 3, 
       "playstyle": "NONE", 
       "isHotStreak": false, 
       "isVeteran": false, 
       "isFreshBlood": false, 
       "isInactive": false 
      } 
     ] 
     }, 
     { 
     "name": "Darius's Ritualists", 
     "tier": "PLATINUM", 
     "queue": "RANKED_TEAM_5x5", 
     "entries": [ 
      { 
       "playerOrTeamId": "TEAM-612b20d0-59c3-11e6-ae27-c81f66daeaa4", 
       "playerOrTeamName": "Raging Turtles Reborn", 
       "division": "II", 
       "leaguePoints": 5, 
       "wins": 8, 
       "losses": 4, 
       "playstyle": "NONE", 
       "isHotStreak": false, 
       "isVeteran": false, 
       "isFreshBlood": false, 
       "isInactive": false 
      } 
     ] 
     }, 
     { 
     "name": "Kayle's Lancers", 
     "tier": "PLATINUM", 
     "queue": "RANKED_TEAM_5x5", 
     "entries": [ 
      { 
       "playerOrTeamId": "TEAM-989e11c5-8c05-11e6-9e23-c81f66dd7106", 
       "playerOrTeamName": "Raging turtles", 
       "division": "I", 
       "leaguePoints": 0, 
       "wins": 5, 
       "losses": 0, 
       "playstyle": "NONE", 
       "isHotStreak": false, 
       "isVeteran": false, 
       "isFreshBlood": false, 
       "isInactive": false 
      } 
     ] 
     } 
    ] 
} 
+0

Was ist, wenn Sie mehr als eine mit der gleichen höchsten Ebene haben? – nanocv

+0

Zuerst müssen Sie json_decode() verwenden, um es zu einem Array zu machen. – devpro

+0

Ich habe bereits JSON dekodieren und das, nachdem ich danach kennen gelernt habe, wie man Zugriff darauf bekommt. In einem Beispiel. Auch wenn es mehr als einen der höchsten gibt, ist es ein bisschen schwierig, da es Tiers, Divisons und LeaguePoints gibt, die höchsten in allen, die die Besten sein werden, aber ich bin gerade nach Beispiel mit Tiers, um den Rest herauszufinden – ForsakenHound

Antwort

0

Sie können gruppieren sie nach Wert der Stufe wie folgt aus:

$levels = explode(',', 'BRONZE,SILVER,GOLD,PLATINUM,DIAMOND,MASTER,CHALLENGER'); 

$tier_data = array(); 
foreach ($jsona as $unknown_key_id=>&$users) { 
    foreach ($users as &$user) { 
    $tier_value = array_search($user->tier, $levels); 
    $tier_data[$tier_value][] = $user; 
    } 
} 

die('<pre>'.print_r($tier_data,true)); 
+0

Vielen Dank, war eine große Hilfe für das Verständnis dieser – ForsakenHound

+1

hey Sie wetten! Viel Glück in deinen PHP-Bemühungen! – WEBjuju