我想在我的网站上实现类似的内容:Facebook Notification
但我的问题是我无法找出循环机制:
这是我的数组形式的数据:
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
)
)
有人想分享他们关于如何在while / for循环中对日期进行分组的知识吗?
答案 0 :(得分: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';
}