仅当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 */
答案 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>";
}
我认为它比你的方式简单得多。