Привет, я пытаюсь получить json из fixer.io, а затем для каждой скорости повторять его, но не могу заставить его работать. код
<?php
function usd(){
echo 'HEJ test';
$fixer_access_key = my_access_key;
$url= 'https://data.fixer.io/api/latest?access_key=' . $fixer_access_key;
echo $url;
$json = file_get_contents($url);
$data = json_decode($json);
echo $url . "<br>";
echo 'printing json foreach <br>';
foreach($data as $obj){
echo '...';
$prefix = $obj;
echo $prefix;
echo '<br>';}
echo 'done printing json foreach';
}
usd(); ?>
и результат:
https://data.fixer.io/api/latest?access_key=my_fixer_key
печать json foreach
печать json foreach завершена
Скопируйте / вставьте всю информацию в сам вопрос. Добавьте пример json, результат, который вы получаете в данный момент, и каким должен быть ожидаемый результат. Прочтите: Как создать минимальный, полный и проверяемый пример, а также Как мне задать хороший вопрос?
И, возможно, проверьте свои отчеты об ошибках / журналы. Предполагая, что ответ до сих пор при условии, вы получите ошибку Object of class stdClass could not be converted to string.






вместо
$data = json_decode($json);
использовать
$data = json_decode($json, true);
Это должно позволить foreacha работать - однако вы увидите только первый уровень ключей объекта json (а не вложенные). Второй параметр json_decode изменяет результат от объекта к массиву.
Вам также нужно будет изменить foreach - на следующее: foreach($data as $key => $obj), а внутри него echo $obj на echo $key;.
Вот упрощенный рабочий пример.
АЛЬТЕРНАТИВНОЕ РЕШЕНИЕ
Если ваша цель не в работе с foreach, а в довольно печатном json, используйте следующий код:
$json_string = json_encode($data, JSON_PRETTY_PRINT);
echo $json_string;
Я бы начал с
var_dump($data). Является ли ответ действительным в формате JSON, что на самом деле возвращается отjson_decode?