1

嗨,我正在尝试从 fixer.io 获取 json,然后对每个速率进行回显,但无法使其正常工作。代码是

<?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

4

1 回答 1

0

代替

$data = json_decode($json);

利用

$data = json_decode($json, true);

这应该允许 foreacha 工作 - 但是您只会看到第一级 json 对象键(而不是嵌套键)。json_decode将结果从对象更改为数组的第二个参数 。

您还需要将 foreach - 更改为 following:foreach($data as $key => $obj)并在其中echo $obj更改为echo $key;.

这是简化的工作示例

替代解决方案

如果工作foreach不是您的目标,而是打印漂亮的 json,那么请改用以下代码:

  $json_string = json_encode($data, JSON_PRETTY_PRINT);
  echo $json_string;
于 2018-05-10T20:50:21.363 回答