2013-09-27 231 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