2013-07-14 37 views
1

我要實現我的網站是這樣的:Facebook NotificationFacebook風格通知日期循環?

但我的問題是我不能設法找出循環機制:

  1. 今天找到組具有相同的日期。
  2. 然後將日期遞減1,然後將該日期的所有數據進行分組。
  3. 減少並再次分組。

這裏是我的數據在陣列形式:

Array (
[0] => Array (
    [name] => test1 
    [date] => 2013-07-15 04:02:53 
) 
[1] => Array (
    [name] => mine2 
    [date] => 2013-07-15 03:24:57 
) 
[2] => Array (
    [name] => mine3 
    [date] => 2013-07-12 04:19:59 
) 
[3] => Array (
    [name] => mine4 
    [date] => 2013-07-11 05:05:38 
) 
[4] => Array (
    [name] => mine5 
    [date] => 2013-07-10 05:05:38 
) 
[5] => Array (
    [name] => ffff 
    [date] => 2013-07-10 05:02:38 
) 
[6] => Array (
    [name] => affff 
    [date] => 2013-07-09 05:02:38 
) 

任何人都希望分享他們對集團如何日期知識在一段時間/ for循環?

回答

1

我的做法是遍歷數據(假設它是按日期排序)和組具有相同日期的所有項目如下:

$grouped_data = array(); 
$lastday = null; 
foreach($data as $d){ 
    $thisday = strtotime(substr($d['date'],0,10)); 
    $grouped_data[$thisday][] = $d; 
    if($thisday != $lastday) 
     $lastday = $thisday; 
} 

現在,所有你需要做的就是遍歷天在分組的數據,並在他們每個人顯示的項目:

foreach($grouped_data as $day => $data){ 
    echo '<h2>'.date('M d', $day).'</h2>'; 
    foreach($data as $d){ 
     echo $d['name'].'<br/>'; 
    } 
} 

如果你想顯示「今天」或代替日期「昨天」,那麼你可以寫一個簡單的條件來檢查當前一天你'循環是今天或昨天

$title = date('M d', $day); 
if($title === date('M d')){ 
    $title = 'Today'; 
}elseif($title === date('M d',mktime(0, 0, 0, date('m'), date('d')-1))){ 
    $title = 'Yesterday'; 
} 
+0

謝謝koala_dev爲您提供最佳解決方案! – Raymond

+0

+1。這對我很有幫助! –