2017-07-17 73 views
0

我要顯示與標題,流派,體裁,說明電視節目的列表,使用服務器上的一個JSON文件開始時間和持續時間,但我得到以下錯誤(非對象):遍歷JSON

E_NOTICE:式8 - 嘗試獲取非對象的屬性 - 在第13行

E_WARNING:類型2 - 爲的foreach()提供參數無效 - 在第13行

這裏是一塊樣品json:

{"channel":"6280", 
"banned":true, 
"plan":[ 
{"id":"-1", 
"pid":"0", 
"starttime":"00:00", 
"dur":"65", 
"title":"", 
"normalizedtitle": "", 
"desc":"", 
"genre":"", 
"subgenre":"", 
"prima":false 
}, 


{"id":"94622386", 
"pid":"507461", 
"starttime":"01:05", 
"dur":"65", 
"title":"Sex Researchers", 
"normalizedtitle": "sex-researchers", 
"desc":"Ep. 2 - Ciclo The Body of...", 
"genre":"mondo e tendenze", 
"subgenre":"societa", 
"prima":false 
}, 

這裏是我使用的PHP代碼:

<?php 
$channel = '6280'; 
$current_unix = time(); 

$json = json_decode(file_get_contents('http://guidatv.sky.it/app/guidatv/contenuti/data/grid/'.date('y_m_d').'/ch_'.$channel.'.js')); 
//print_r($json); 

echo '<ul>'; 

foreach ($json as $data) { 

echo '<li>'; 
foreach ($data->plan as $prog) { 

if ($current_unix < $prog->starttime) { 

echo $prog->id . '<br>'; 
echo $prog->starttime . '<br>'; 
echo $prog->dur . '<br>'; 
echo $prog->desc . '<br>'; 
if (isset($prog->genre)) { 
echo $prog->genre . '<br>'; 
} 
} 
} 
echo '</li>'; 
} 
echo '</ul>'; 
?> 

你能幫我解決這個問題呢?謝謝

+0

這是一個完整的JSON樣本?因爲你給定的JSON是無效的。 – invisal

+0

嗨,在這裏你可以找到完整的JSON:http://guidatv.sky.it/app/guidatv/contenuti/data/grid/17_04_22/ch_6280.js – fredix11

回答

0

你不能循環對象。你的JSON不返回通道數組,但只返回一個通道對象。這是你想要的:

$json = json_decode(file_get_contents('http://guidatv.sky.it/app/guidatv/contenuti/data/grid/'.date('y_m_d').'/ch_'.$channel.'.js')); 

echo '<ul>'; 
foreach ($json->plan as $prog) { 
    echo "<li>" . $prog->title . '</li>'; 
} 
echo '</ul>'; 
+0

如何顯示給定的JSON電視節目的名單? – fredix11

+0

@ fredix11,更新了答案。你可以檢查。 – invisal