2013-09-27 174 views
0

虽然下面的代码是WordPress的,但我的问题是更多关于一般的PHP循环。PHP循环条件

我想获得最近7天的帖子。我只想得到最后7天有帖子。如果有一天没有任何帖子,它应该跳到第二天。

我使用下面的循环来获取最近7天的帖子,但问题是,如果一天没有帖子,它将只循环最后7天,无论是否有任何帖子。

所以,我试图扩展$ i值,只有当有后,但如果我把它放在if条件,它将运行无限次。 感谢您的任何帮助。

$day = date('j'); 
while($i <= 7){ 
    query_posts('day='$day);  
    if (have_posts()){ 
     //list posts. 
    } 
    $i++; 
    $day--; 
} 
+0

您需要确定在这里你已经检查的所有条目的情况。换句话说,当你的查询失败或者你经过第一个(最后一个)文章。 – RyanS

+0

当$ day变为负值时,您想要发生什么? – Moob

+0

@Moob这比我想象的要复杂得多。我想得到最后7天有帖子,但现在我意识到那天(int)不是好主意,因为它不会在负面日子工作。我只是无法弄清楚这一点。 – user2738640

回答

1

你可以为循环和查询日期设置了一个上限,而不是一天:

$date = date('Y-m-d'); 
$maxAttempts=100; 
$postCount=0; 
while($i <= $maxAttempts && $postCount <= 7){ 
    query_posts('date='$date);  
    if (have_posts()){ 
     //list posts. 
     $postCount++; 
    } 
    $i++; 
    $date = date('Y-m-d', strtotime($date .' -1 day')); 
} 
0

尝试......

$day = date('j'); 
$post_days_count = 0; 
while($post_days_count < 7){ 
    query_posts('day='$day);  
    if (have_posts()){ 
     $post_days_count++; 
     //list posts. 
    } 
    $day--; 
} 
+0

谢谢,但我已经试过这个,这将无法正常工作,因为每月的一天会变成负面的,如果我在if条件中放置$ day,它将运行无限。 – user2738640

0

你可以改变你的循环只增加$i如果后期被发现,这将意味着这个循环运行,直到它找到7个职位。一定要处理它永远不会找到7个职位的情况。

+0

感谢您的回答,是的,那就是我想要做的。如果我将$ i放入if条件中,那么$ day会变为负值,并且循环不会返回正确的结果。 – user2738640