Непонятное появление ошибок при обработке JSON / API

Я использую riots api (Лигу Легенд), чтобы получить некоторую информацию, используя json / php / curl. Мне попалось очень непонятное сообщение об ошибке, которое я не понимаю. Этот код не работает:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://euw.api.pvp.net/api/lol/euw/v2.5/league/by-summoner/31827832?api_key=key');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($ch);

curl_close($ch);
//var_dump($response);

$json = json_decode($response, true);

foreach($json['entries'] as $entry){

echo $entry['playerOrTeamName'] . ',' . $json['tier'] . ',' . $entry['division'] . ',' . $entry['leaguePoints'] . ',' . $entry['wins'] . "<br/>";
}

Это var_dump в массиве:

{
"name":"Ezreal's Zealots",
"tier":"PLATINUM",
"queue":"RANKED_SOLO_5x5",
"entries": [{
"playerOrTeamId":"34458086",
"playerOrTeamName":"OverdrivZ",
"division":"V",
"league‌​Points":21,
"wins":102,
"isHotStreak":false,
"isVeteran":false,
"isFreshBlood":false‌​,
"isInactive":false
}]

Сообщение об ошибке: Notice: Undefined index: entries in /hermes/bosoraweb130/b411/ipg.notsureifpossiblecom/index.php on line 23 а также

Warning: Invalid argument supplied for foreach() in /hermes/bosoraweb130/b411/ipg.notsureifpossiblecom/index.php on line 23,

Строка 23 в моем коде:

foreach($json['entries'][0] as $entry){

Но этот точно такой же код работает, когда я использую другой запрос API:

ini_set("display_errors", "1"); error_reporting(E_ALL);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://euw.api.pvp.net/api/lol/euw/v2.5/league/challenger?type=RANKED_SOLO_5x5&api_key=key');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($ch);

curl_close($ch);

$json = json_decode($response, true);

foreach($json['entries'] as $entry){

echo $entry['playerOrTeamName'] . ',' . $json['tier'] . ',' . $entry['division'] . ',' . $entry['leaguePoints'] . ',' . $entry['wins'] . "<br/>";
}

Единственное изменение в запросе API-адреса, challenger версия. Почему этот код работает для этого запроса API-адреса, а не для первого. Отголоски, которые я хочу выполнить, должны работать для записей, показанных в массиве. Я не понимаю, что происходит, должно быть что-то очень простое? Пожалуйста, помогите мне.

0

Решение

Кажется, есть еще два уровня массива, так что у вас есть:

Array (
[31827832] => Array (
[0] => Array (
[name] => Ezreal\'s Zealots
[tier] => PLATINUM
[queue] => RANKED_SOLO_5x5
[entries] => Array (
[0] => Array (
[playerOrTeamId] => 34458086
[playerOrTeamName] => OverdrivZ
[division] => V
[leaguePoints] => 21
[wins] => 102
[isHotStreak] =>
[isVeteran] =>
[isFreshBlood] =>
[isInactive] =>
)

Итак, похоже, что первая запись в массиве на самом деле является целочисленным индексом с идентификатором проигрывателя, поэтому я думаю, что есть вызов API, чтобы получить его, но в этом случае используйте это:

$json = array_pop($json);
foreach($json[0]['entries'] as $entry){
....
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector