我正在显示类别中具有有效日期的所有帖子,如下所示 -
<?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 ...有什么建议吗?
答案 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 } ?>