0

私の質問:

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 */
4

1 に答える 1

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>";
}

あなたの方法よりもはるかに簡単だと思います。

于 2012-07-05T15:03:55.943 に答える