从foreach循环中获取条件消息

时间:2013-09-09 19:19:28

标签: php

我正在显示类别中具有有效日期的所有帖子,如下所示 -

<?php $blog = $pages->find('posts');
     foreach($blog->children() as $blogpost): ?>
     <?php if ($blogpost->title() <= $latest && $blogpost->category == $thisCat): ?>
              //HTML for displaying post goes here
         <?php endif ?>
     <?php end foreach ?>

当这些帖子验证我的条件时,它可以正常工作,如果没有则不显示任何内容。我想要做的是当没有帖子通过条件时显示错误消息(比如“这里没有帖子”)。我不能在else查询中执行简单的if条件,因为它位于foreach循环内。我无法从if循环中取出foreach查询,因为它依赖于定义为其一部分的变量($blogpost)。

有点困在这个捕获22 ...有什么建议吗?

3 个答案:

答案 0 :(得分:2)

怎么样......

 <?php
 $blog = $pages->find('posts');
 $found_something = false;
 foreach($blog->children() as $blogpost) {
   if ($blogpost->title() <= $latest && $blogpost->category == $thisCat) {
      $found_something = true;
      //HTML for displaying post goes here
   }
 }
 if(!$found_something) {
   // display error message
 }
 ?>

顺便提一下,您使用alternative PHP syntax的具体原因是什么?

答案 1 :(得分:0)

我会创建一个计数器变量,每次显示帖子时都会递增。

<?php $blog = $pages->find('posts');
      $displayedPosts = 0;
     foreach($blog->children() as $blogpost): ?>
     <?php if ($blogpost->title() <= $latest && $blogpost->category == $thisCat):
             $displayedPosts++; ?>
              //HTML for displaying post goes here
         <?php endif ?>
     <?php end foreach ?>
<?php
  if ($displayedPosts == 0) {
    echo 'ERROR!';
  }
?>

在这种情况下,使用布尔变量(如tmh所做的)可能更好,除非你想计算帖子。

答案 2 :(得分:0)

只计算你的帖子,如果它只显示消息,则执行foreach循环:

  <?php $blog = $pages->find('posts');

 if(count($blog->children())==0){ echo 'No post Here'; } 

 else{

   foreach($blog->children() as $blogpost): ?>
   <?php if ($blogpost->title() <= $latest && $blogpost->category == $thisCat): ?>
          //HTML for displaying post goes here
       <?php endif ?>
   <?php end foreach ?>

<?php } ?>