2015-05-26 2 views
0

мне было интересно, как извлечь только определенную часть из JSON строки:PHP Распаковка определенную часть JSON строки, где имя пользователя равно

[ 
     { 
       "ID": "132", 
       "countrycode": "DE", 
       "USERNAME": "CRC Titan2000", 
       "Nickname": "^7[6S] ^1Titan", 
       "Money": "550111", 
       "Distance": "105692714", 
       "Trip": "370839", 
       "Bonus": "223", 
       "Last Car": "RB4", 
       "Last Position": "The Hills", 
       "Server": "^7One" 
     }, 
     { 
       "ID": "1634", 
       "countrycode": "ES", 
       "USERNAME": "lobocop", 
       "Nickname": "^4Leo ^1Messi", 
       "Money": "12816", 
       "Distance": "17091463", 
       "Trip": "25682", 
       "Bonus": "29", 
       "Last Car": "MRT", 
       "Last Position": "Bridge East", 
       "Server": "^7One" 
     }, 
     { 
       "ID": "4240", 
       "countrycode": "GB", 
       "USERNAME": "Smacky", 
       "Nickname": "^7^d^6o^7^s", 
       "Money": "-532", 
       "Distance": "1987579", 
       "Trip": "7738", 
       "Bonus": "51", 
       "Last Car": "RB4", 
       "Last Position": "The Hills", 
       "Server": "^7One" 
     }, 
     { 
       "ID": "5467", 
       "countrycode": "TR", 
       "USERNAME": "excaTR", 
       "Nickname": "^1Furkan^7Tr", 
       "Money": "7363", 
       "Distance": "17064283", 
       "Trip": "15747", 
       "Bonus": "31", 
       "Last Car": "RB4", 
       "Last Position": "Bridge East", 
       "Server": "^7One" 
     } 
] 

Я только хочу, чтобы вытащить «последнюю позицию» в «USERNAME «excaTR», но игнорировать все остальные. Похоже на запрос MySQL, где я хочу повторить последнюю позицию WHERE username = 'excaTR', но вместо этого для PHP и JSON.

Это код, который я пытался, но он не работает

$json_stats = file_get_contents('<JSON string here>'); 
$stats_data = json_decode($json_stats, true); 

foreach ($stats_data as $_SESSION['username'] => $location){ 
    echo $location['Last Position']; 
} 
+1

Вы можете начать иметь взгляд на [документации Еогеасп] (http://php.net/manual/en/control-structures.foreach.php). И, возможно, раздел справки этого сайта. Кроме того, неплохо дать некоторые дополнительные подробности, а не просто «это не сработало» – Burki

ответ

0

Вы не используете foreach, как это должно быть. Посмотрите на свой JSON, у вас есть массив объектов.

Итак, вам нужно выполнить итерацию по вашему массиву и проверить значения вашего объекта.

Кстати, в моем ответе я использую json_decode(,false), чтобы заставить результат как многомерный массив, только вопрос вкуса.

$json_stats = file_get_contents('<JSON string here>'); 
$stats_data = json_decode($json_stats, false); 

foreach ($stats_data as $array) { 
    if ($array['USERNAME'] == 'excaTR') { 
    echo $array['Last Position']; 
    } 
} 
+0

Работал отлично - спасибо! – CodeDan20

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