【问题标题】:PHP foreach - parsed json from URLPHP foreach - 从 URL 解析 json
【发布时间】:2014-08-01 12:03:52
【问题描述】:

我有一个从 URL 调用的 JSON 文件。我已经检查过了,我正在从 URL 中获取数据。
我已经尝试了很多,但我无法让循​​环 foreach 工作 - 出了什么问题?

<?php

$url = 'http://banen.klintmx.dk/json/ba-simple-proxy.php?url=api.autoit.dk/car/GetCarsExtended/59efc61e-ceb2-463b-af39-80348d771999';
$json= file_get_contents($url);

$data = json_decode($json);
$rows = $data->{'contents'};
foreach($rows as $row) {
echo '<p>';
$FabrikatNavn = $row->{'contents'}->{'FabrikatNavn'};
$ModelNavn = $row->{'contents'}->{'ModelNavn'};
$PrisDetailDkk = $row->{'contents'}->{'PrisDetailDkk'};
echo $FabrikatNavn . $ModelNavn . ' Pris ' . $PrisDetailDkk;
echo '</p>';
}

?>

【问题讨论】:

  • 我在 PHP 中从未见过像 $data-&gt;{'contents'} 这样的符号。错误信息是什么?
  • 您可以将$data-&gt;{'contents'} 替换为$data-&gt;contents。如果要访问动态属性,则使用该语法,例如 $data-&gt;{$otherVar}
  • @bali182 - 这也行。

标签: php json foreach


【解决方案1】:

实际问题是您尝试再次访问content 对象。只需将您的 foreach sn-p 更改为,

foreach ($rows as $row) {
    echo '<p>';
    $FabrikatNavn = $row->FabrikatNavn;
    $ModelNavn = $row->ModelNavn;
    $PrisDetailDkk = $row->PrisDetailDkk;
    echo $FabrikatNavn . $ModelNavn . ' Pris ' . $PrisDetailDkk;
    echo '</p>';
}

DEMO.

【讨论】:

    【解决方案2】:

    使用json_decode($data, true),以便将 JSON 内容解析为 PHP 数组。所以会是这样的

    $rows = $data['contents'];
    foreach($rows as $row) {
        echo '<p>';
        $FabrikatNavn = $row['contents']['FabrikatNavn'];
        $ModelNavn = $row['contents']['ModelNavn'];
        $PrisDetailDkk = $row['contents']['PrisDetailDkk'];
        echo $FabrikatNavn . $ModelNavn . ' Pris ' . $PrisDetailDkk;
        echo '</p>';
    }
    

    【讨论】:

    • json_decode($contents, true) 照你说的做。否则关联部分将是对象。
    • 感谢您的信息,不知道。我相应地修改了我的答案。
    【解决方案3】:

    看看使用json_decode($json, true),因为这会将数据转换为关联数组,这似乎是您接近解决方案的方式。

    通过使用var_dump()print_r() 打印来检查输出

    【讨论】:

      【解决方案4】:

      这样试试

      $data = json_decode($json,true); //decode json result as array and thenloop it
      print '<pre>';
      print_r($data);
      foreach($data as $row){
      //do something here
      }
      

      【讨论】:

        猜你喜欢
        • 2013-04-15
        • 2018-05-14
        • 2016-08-03
        • 2017-05-31
        • 1970-01-01
        • 2012-06-01
        • 2020-07-12
        • 2017-06-17
        • 1970-01-01
        相关资源
        最近更新 更多