#php #json #riot #riot-games-api
#php #json #riot #riot-games-api
Вопрос:
В рамках задания я пытаюсь извлечь некоторую статистику из Riot API (данные JSON для League of Legends). На данный момент мне удалось найти идентификатор призывателя (user id) на основе имени призывателя, и я отфильтровал идентификаторы предыдущих (20) игр указанного призывателя. Однако сейчас я не могу понять, как получить правильные значения из данных JSON. Думаю, именно тогда я покажу вам свой код:
$matchIDs — это массив из 20 целых чисел (идентификаторов игр)
for ($i = 1; $i <= 1; $i )
{
$this_match_data = get_match($matchIDs[$i], $server, $api);
$processed_data = json_decode($this_match_data, true);
var_dump($processed_data);
}
Как показано выше, мой цикл for установлен на единицу, поскольку я просто сосредотачиваюсь на определении одного, прежде чем продолжить со всеми 20. Приведенный выше пример показывает, как я получил идентификаторы соответствия и вызывающего идентификаторы. Я добавлю эти коды сюда для сравнения:
for ($i = 0; $i <= 19; $i )
{
$temp = $data['matches'][$i]['matchId'];
$matchIDs[$i] = json_decode($temp, true);
}
$data — это переменная, которую я получаю, когда извлекаю всю информацию со страницы JSON, это тот же метод, который я использую для получения $ this_match_data в первом блоке кода.
function match_list($summoner_id, $server, $api)
{
$summoner_enc = rawurlencode($summoner);
$summoner_lower = strtolower($summoner_enc);
$curl =curl_init('https://'.$server.'.api.pvp.net/api/lol/'.$server.'/v2.2/matchlist/by-summoner/'.$summoner_id.'?api_key='.$api.'');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
Теперь перейдем к корню проблемы, вот куда я помещаю данные, которые получаю с сайта, чтобы вы могли видеть, с чем я работаю. Теперь, используя следующий код, я могу получить первое значение в этом файле, идентификатор соответствия.
echo $processed_data['matchId'];
Но, похоже, я не могу заблокировать какую-либо другую информацию из этого файла .json. Я безуспешно пытался вводить что-то вроде [‘region’] вместо [‘MatchID’], а также вставлять индексные номера типа $processed_data [0], но ничего не происходит. Именно так я получаю правильную информацию из первых примеров, и я действительно теряюсь здесь.
Ответ №1:
Хорошо, я думаю, что разобрался с этим сам. Добавив это в код, я могу распечатать файл json более удобным для человека способом, и это должно значительно упростить обработку данных.
echo ("<pre>");
var_dump($processed_data);
echo ("</pre>");
Комментарии:
1. Лично я предпочитаю
print_r($processed_data);
для удобства чтения или дажеvar_export($processed_data);