php在循环

时间:2017-05-19 08:26:38

标签: php html

我的php遇到了奇怪的行为。它在我的html中添加了一个情感段落,但我无法弄清楚为什么。

我正在遍历一个看起来像这样的json对象

{
    "1495147646442": {
        "description": "Wonderful!",
        "fileNames": [
            "1.jpg",
            "2.jpg"
        ]
    }
}

我的php看起来如下。

<?php
  $json = file_get_contents('auction.json');
  $json = json_decode($json);

  foreach ($json as $obj)
    {

      echo "<div class='row'>";
      echo "<p>" . $obj->description . "</p>";

      for ($x = 0; $x < count($obj->fileNames); $x++)
      {      
        echo "<img class='col-md-6' src=" . $obj->fileNames[$x] . ">"; 
      }

      echo "</div>";

  }
?>

生成的html如下所示:

<div class='row'>
  <p>Wonderful!</p>
  <img class='col-md-6' src="1.jpg">
  <img class='col-md-6' src="2.jpg">
</div>


<div class='row'>
  <p></p>
</div>

然而,我希望得到

<div class='row'>
  <p>Wonderful!</p>
  <img class='col-md-6' src="1.jpg">
  <img class='col-md-6' src="2.jpg">
</div>

2 个答案:

答案 0 :(得分:5)

Just check $obj->description is not empty in your foreach loop.

<?php
  $json = file_get_contents('auction.json');
  $json = json_decode($json);

  foreach ($json as $obj)
    {
        if(isset($obj->description) && $obj->description != ''){

            echo "<div class='row'>";
            echo "<p>" . $obj->description . "</p>";

            for ($x = 0; $x < count($obj->fileNames); $x++)
            {      
            echo "<img class='col-md-6' src=" . $obj->fileNames[$x] . ">"; 
            }

            echo "</div>";
        }

  }
?>

答案 1 :(得分:0)

您可以使用解码json_decode($json, true); =&gt;的数组方式array way。或object way json_decode($json);

简单检查$obj是否为对象就足够了。