【问题标题】:How to skip json object if it has a empty value?如果json对象为空值,如何跳过它?
【发布时间】:2017-12-28 16:14:03
【问题描述】:

很多天以来我一直坚持这一点...我正在使用此代码来解析存储在服务器上的 json EPG 指南:

<?php
$channel = '899';
$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', true));
echo '<ul>';
foreach ($json->plan as $prog) {
echo "<li>" . $prog->title . "</li>";
echo '</ul>';  
}
?> 

我想跳过这部分 json 的显示,因为它有空字段

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

我该怎么做?

【问题讨论】:

  • 基本上你想跳过哪个空元素?标题、描述或其他任何内容?
  • 我想跳过空标题
  • @YvesLeBorg $plan-&gt;title = "" 怎么样?这将通过条件
  • 养成好习惯。做 echo "&lt;li&gt;" . htmlspecialchars($prog-&gt;title) . "&lt;/li&gt;"; 而不是 echo "&lt;li&gt;" . $prog-&gt;title . "&lt;/li&gt;"; 。保护自己免受 HTML 注入。

标签: php json api if-statement foreach


【解决方案1】:

您可以在 foreach 中添加如下条件:

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

【讨论】:

  • 注意“0”问题,如果标题为“0”则不会回显。还从循环中删除&lt;/ul&gt;
  • 它可以工作,但第一个条目有一个我无法删除的奇怪缩进:phpfiddle.org/lite/code/i765-2ajn
  • 如会计师所说,一定在外面,我更新了答案,看看
猜你喜欢
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多