首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >循环通过json (非对象?)

循环通过json (非对象?)
EN

Stack Overflow用户
提问于 2017-07-18 00:05:22
回答 1查看 48关注 0票数 0

我想使用服务器上的json文件显示电视节目的列表,包括标题、流派、子流派、描述、开始时间和持续时间,但我得到了以下错误:

E_NOTICE :类型8 --尝试获取非对象的属性--第13行

E_WARNING :类型2 --在第13行为foreach()提供的参数无效

下面是一段json示例:

代码语言:javascript
复制
{"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代码:

代码语言:javascript
复制
<?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>';
?>

你能帮我解决这个问题吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-18 00:16:38

你不能在对象上循环。您的JSON不返回channel数组,而只返回一个channel对象。这是你想要的:

代码语言:javascript
复制
$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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45148830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档