Вот мой код PHP/JSON:
$json_url = "http://dailydota2.com/match-api";
$json = file_get_contents($json_url);
$json=str_replace('},
]',"}
]",$json);
$decoded= json_decode($json);
$data=$decoded->matches[0];
foreach ($data as $value) {
print_r($value->team1->logo_url);
}
Теперь у меня есть следующая проблема
Примечание. Попытка получить свойство не объекта
а также
Примечание. Неопределенное свойство: stdClass :: $ team1
Я просто хочу использовать foreach loop
а затем показывать результаты в HTML.
Почему я получаю 2 упомянутые проблемы и как я могу показать правильные результаты?
logo_url
из team
или image_url
из league
? Я покажу как в моей реализации.Итак, вот какой исправленный код
$json_url = "http://dailydota2.com/match-api";
$json = file_get_contents($json_url);
$decoded= json_decode($json,true); // True turns it into an array
$data = $decoded['matches'];
foreach ($data as $value) {
//I am not sure which one you want!!!
echo $value['league']['image_url'] . "<br>";
echo $value['team1']['logo_url'] . "<br>";
echo $value['team2']['logo_url'] . "<br>";
}
* РЕДАКТИРОВАТЬ Чтобы показать желаемую реализацию автором вопросов...
$json_url = "http://dailydota2.com/match-api";
$json = file_get_contents($json_url);
$decoded= json_decode($json,true); // True turns it into an array
$data = $decoded['matches'];
foreach ($data as $value) {
echo "
<img src=\"http://dailydota2.com/{$value['team1']['logo_url']}\">
<img src=\"http://dailydota2.com/{$value['team2']['logo_url']}\">
";
}
<img src="http://dailydota2.com/<?php echo $value['team1']['logo_url'] ?>"> <img src="http://dailydota2.com/<?php echo $value['team2']['logo_url'] ?>">
покажите мне только последний результат, как я могу показать все результаты в html?
Я проверил ваш код и получил несколько заметок и, надеюсь, решение:
1- Вы пытаетесь получить не существующий ключ из данных JSON, то есть сообщение, сообщающее вам.
2- Я все еще не уверен, что вы получаете от JSON API. Но в отношении документации dailydota2 в команде 1 ничего не называется image_url. Наверное, вы ищете logo_url или что-то в этом роде.
3- Не изменяйте формат JSON, как в коде, поэтому удалите следующую строку:
$json=str_replace('}, ]',"} ]",$json);
Просто оставить основной вывод JSON из API по умолчанию.
4- Когда вы пытаетесь получить конкретный ключ от декодированного JSON/Array, используйте следующий способ:
$data = $decoded->{'matches'};
вместо
$data=$decoded->matches[0];
Ссылка: http://php.net/manual/en/function.json-decode.php
5- И, наконец, ваш foreach loop
работает, но нужен правильный ключ:
foreach ($data as $value) {
print_r($value->team1->logo_url);
}
Когда все эти шаги будут выполнены, он должен работать.
Вот ваш окончательный исправленный код:
$json_url = "http://dailydota2.com/match-api";
$json = file_get_contents($json_url);
$decoded = json_decode($json);
$data = $decoded->{'matches'};
foreach ($data as $value) {
print_r($value->team1->logo_url);
echo '<img src="http://dailydota2.com/' . $value->team1->logo_url . '">';
}
Он возвращает следующий результат, и я не получаю никаких ошибок.
/images/logos/teams/cdecgaming.png/images/logos/teams/teamempire.png
/images/logos/teams/ehome.png/images/logos/teams/ehome.png
/images/logos/teams/fnatic.png/images/logos/teams/cloud9.png
/images/logos/teams/teamissecret.png/images/logos/teams/teamissecret.png
/images/logos/teams/natusvincere.png/images/logos/teams/fnatic.png
Опять же, я действительно не знаю, какую информацию вы хотите получить от API, но здесь у вас есть база рабочего кода, с которым вы можете работать дальше, чтобы получить требуемые данные от правильных KEY.
<img src="http://dailydota2.com/<?php echo $value->team1->logo_url ?>"> <img src="http://dailydota2.com/<?php echo $value->team1->logo_url ?>">
это просто показать мне последний результат, как я могу показать все результаты?
{ echo '<img src="http://dailydota2.com/' . $value->team1->logo_url . '">'; }
он покажет все изображения, и вы можете пометить // print_r и т. д ...
str_replace
на результат?var_dump($decoded)
?