私の質問:
json オブジェクトに画像が含まれている場合にのみスライドをエコーするにはどうすればよいですか?
私の問題:
json オブジェクトの for ループを処理して、画像が含まれている場合にのみスライドをエコーする方法がわかりません。
目的:
json オブジェクトに画像がある場合にのみ div をエコーできるようにしてから、画像の周りにリンクをエコーして、ストーリーにリンクできるようにしたいと考えています。
追加:
画像がない場合、「#slides」内でスライド div をエコーしないようにするにはどうすればよいですか?
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 */