仅当json对象包含图像时,如何回显幻灯片?

时间:2012-07-05 14:48:49

标签: php json loops

我的问题:

仅当json对象包含图像时,如何回显幻灯片?

我的问题:

我不确定如果json对象的for循环仅在它包含图像时回显幻灯片,我该如何处理它。

目的:

我希望只有在json对象中有图像时才能回显div,然后回显图像周围的链接,以便链接到故事。

其他:

如果没有图像,我怎能不回显“#slides”里面的幻灯片?

如果PHP包含图像而不破坏foreach循环,那么PHP中是否有某些内容可以让我回显幻灯片?

或者我将不得不打破foreach循环,仅存储包含图像的幻灯片的信息并重新循环它们?如果是这样,最好的方法是什么?

我输了,因为如果我为$ key ==“img”创建一个if语句,它只会回显图像部分,不知道我应该如何处理它。

代码:

NEWS.JSON

{
    "1": {
        "id": "1",
        "img":"./images/newspost/07-05-12.jpg",
        "link":"http://www.cnn.com/2012/07/05/world/europe/france-air-crash-report/index.html",
        "title": "Example",
        "date":"02/08/12",
        "content": "Example"
    },
    "2": {
        "id": "2",
        "img":"",
        "link":"http://online.wsj.com/article/SB10001424052702304141204577508500189367804.html?mod=googlenews_wsj",
        "title": "Example",
        "date":"09/03/10",
        "content": "Example"
    }
}

HOME.PHP

/* Error Report on */
error_reporting(E_ALL);

/* Open Json file */
$json = file_get_contents("./content/news.json");

/* Setup iterator to go through file */
$jsonIterator = new RecursiveIteratorIterator(new RecursiveArrayIterator(json_decode($json, TRUE)),RecursiveIteratorIterator::SELF_FIRST);

/* Create SLIDES for SLIDESHOW */
echo "<div id='slides'>";

此时我不想在没有图像的情况下回显任何内容。

foreach($jsonIterator as $key => $val)
{

if(is_array($val))
{
echo "<div>";
}

if($key=="link")
{
echo "<a href='$val'>";
}

if($key=="img"&&$val!="")
{
echo "<img alt='' src='$val'></img>";

}



if(!is_array($val)&&$key=="content")
{
echo "</a>";
echo "</div>";
}

}

结束循环/仅在图像存在时才需要显示的内容。

echo "</div>";
/* End SLIDES creation */

1 个答案:

答案 0 :(得分:2)

我告诉你如何做到这一点:

$json = file_get_contents("./content/news.json");
$jsonArray = json_decode($json, true);

// Start slideshow...
echo "<div id='slideshow'>";

foreach ($jsonArray as $entry) {
  if ($entry['img'] == '') {
    continue; // Just don't do anything with this entry, go to next one
  }

  // News begins.
  echo "<div>";

  // For example:
  echo "<a href='" . $entry['link'] . "'>";
  // Etc.

  // News ends.
  echo "</div>";
}

我认为它比你的方式简单得多。