我想在foreach上申请条件

时间:2017-08-18 09:41:12

标签: php html json

我想在这里使用php在json数组上应用条件,只显示类型为discursive的数据

my json file

这是我正在尝试的代码,但它没有显示我想要的数据

 <?php
  $obj2 = json_decode($blog_data);
  foreach(array_reverse($obj2->blogs) as $blog)
  {
    if($obj2>b_type == 'discursive')
  {
  ?>
      <h3> <?php echo $blog->name; ?></h3>
      <span> <?php echo $blog->date; ?> </span>
        <p><?php echo $blog->b_text; ?></p>
   <?php
  }
  else{
    echo "no discursive event";
  }
  }
 ?>

3 个答案:

答案 0 :(得分:5)

foreach循环中,您应该访问当前的“博客”项(即$blog),但不能访问公共对象$obj2

...
foreach(array_reverse($obj2->blogs) as $blog)
{
    if ($blog->b_type == 'discursive')
...

答案 1 :(得分:1)

试试这个:

    <?php
    $obj2 = json_decode($blog_data);
    foreach(array_reverse($obj2->blogs) as $blog)
    {
        if($blog->b_type == 'discursive')
        {
       ?>
            <h3> <?php echo $blog->name; ?></h3>
            <span> <?php echo $blog->date; ?> </span>
            <p><?php echo $blog->b_text; ?></p>
        <?php
       }
        else{
            echo "no discursive event";
        }
    }
?>

答案 2 :(得分:1)

您应该在if条件中使用变量$blog而不是$obj2

<?php
$obj2 = json_decode($blog_data);
foreach (array_reverse($obj2->blogs) as $blog) {
    if ($blog > b_type === 'discursive') {
?>
          <h3> <?php
        echo $blog->name;
?></h3>
          <span> <?php
        echo $blog->date;
?> </span>
            <p><?php
        echo $blog->b_text;
?></p>
       <?php
    } else {
        echo "no discursive event";
    }
}
?>

此外:

  • 始终使用===而非==进行严格比较。请查看this article,了解为什么要这样做。