Я новичок в php, и это действительно сильно меня озадачило – я пытаюсь разобрать этот json, чтобы получить значение match_id
.
{ "result": { "status": 1, "num_results": 1, "total_results": 500, "results_remaining": 499, "matches": [ { "match_id": 649218382, "match_seq_num": 588750904, "start_time": 1399560988, "lobby_type": 0, "players": [ { "account_id": 4294967295, "player_slot": 0, "hero_id": 69 } ] } ] } }
Пока у меня есть:
$matchhistoryjson = file_get_contents($apimatchhistoryurl); $decodedmatchhistory = json_decode($matchhistoryjson, true); $matchid = $decodedmatchhistory->{'match_id'};
Но я уверен, что это совсем не так. Все, что мне нужно из этого файла JSON, – это идентификатор соответствия.
Вы получаете массив обратно из json_decode()
когда вы передали второй параметр со значением true
чтобы вы json_decode()
к нему, как к любому многомерному массиву:
$matchhistoryjson = file_get_contents($apimatchhistoryurl); $decodedmatchhistory = json_decode($matchhistoryjson, true); echo $decodedmatchhistory['result']['matches'][0]['match_id'];
демонстрация
Естественно, если у вас есть несколько совпадений, вы хотите получить идентификатор соответствия, вы можете пройти через $decodedmatchhistory['result']['matches']
и получить их соответственно.
Это ваш код:
$matchhistoryjson = file_get_contents($apimatchhistoryurl); $decodedmatchhistory = json_decode($matchhistoryjson, true); $matchid = $decodedmatchhistory->{'match_id'};
Два вопроса. Сначала, когда вы установите true
в вызове json_decode()
который возвращает результаты в виде массива:
When TRUE, returned objects will be converted into associative arrays.
Таким образом, вы получите доступ к данным в виде массива:
$matchid = $decodedmatchhistory['match_id'];
Но ваш оригинальный синтаксис неверен, даже если вы обращались к данным как к объекту:
$matchid = $decodedmatchhistory->{'match_id'};
Если вы установите json_decode()
в значение false
или даже полностью вышли из этого параметра, вы можете сделать это вместо этого:
$decodedmatchhistory = json_decode($matchhistoryjson); $matchid = $decodedmatchhistory->match_id;
Поэтому попробуйте оба и посмотрите, что произойдет.