2014-06-11 131 views
1

我有一個從URL調用的JSON文件。我已經檢查過,並且從網址獲取數據。
我試了很多,但我不能得到循環foreach工作 - 什麼是錯的?PHP foreach - 從URL解析json

<?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>'; 
} 

?> 
+0

我從來沒有在PHP中看到過這樣的'$ data - > {'contents'}''的符號。什麼是錯誤信息? –

+4

你可以用'$ data-> contents'替換'$ data - > {'contents'}'。如果要訪問動態屬性,則使用該語法,如'$ data - > {$ otherVar}' –

+0

@ bali182 - 這也會起作用。 – Rikesh

回答

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

+0

非常感謝,作品完美 – KlintWeb

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>'; 
} 
+0

'json_decode($ contents,true)'做你說的。否則關聯部分將成爲對象。 –

+0

感謝您的信息,不知道。我相應地修改了我的答案。 –

1

看看使用json_decode($json, true),因爲這將數據轉換爲一個關聯數組,這似乎是你接近的解決方案的方式。

檢查與var_dump()print_r()

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 
}