2017-07-17 9 views
0

タイトル、ジャンル、サブジャンル、説明、開始時間、継続時間のリストをサーバー上のjsonファイルを使用して表示したいが、次のエラーが表示される。Loop through 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