PHP foreach - 从URL解析json

时间:2014-06-11 12:20:17

标签: php json foreach

我有一个从URL调用的JSON文件。我已经检查过,并且我从网址获取数据 我已经尝试了很多,但是我无法使循环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>';
}

?>

4 个答案:

答案 0 :(得分:1)

使用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>';
}

答案 1 :(得分:1)

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

使用var_dump()print_r()

打印检查输出

答案 2 :(得分:1)

实际问题是您尝试再次访问content对象。只需使用

更改您的foreach片段即可
foreach ($rows as $row) {
    echo '<p>';
    $FabrikatNavn = $row->FabrikatNavn;
    $ModelNavn = $row->ModelNavn;
    $PrisDetailDkk = $row->PrisDetailDkk;
    echo $FabrikatNavn . $ModelNavn . ' Pris ' . $PrisDetailDkk;
    echo '</p>';
}

<强> DEMO

答案 3 :(得分:0)

试试这个

$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
}