我需要显示按日期分组并按时间排序的记录。在mysql表中,我有一个名为entry_time的字段,其中存储了php time()值。有什么想法是最紧凑、最简单的方法吗?
例如:我需要一个像这样的显示器:
21st April
3:00 pm
3:50 pm
22 April
5:00 am
4:00 pm发布于 2011-06-22 14:17:26
粗略的半伪码:
$records = /* SELECT * FROM `records` ORDER BY `entry_time` */;
$date = null;
foreach ($records as $record) {
$currentDate = date('Ymd', $record['entry_time']);
if ($currentDate != $date) {
printf('<h1>%s</h1>', date('Y-m-d', $record['entry_time']));
}
$date = $currentDate;
echo date('H:i', $record['entry_time']);
}发布于 2011-06-22 14:16:21
如果您使用PHP处理查询结果,请考虑编写一个简单的查询来按日期对记录进行排序:
SELECT NameOfMyThing, MyDateField FROM MyTable ORDER BY MyDateField DESC然后使用PHP读取结果:
$last_day = '';
while ($row = $query_result->fetch()) {
$date = new DateTime($row->['MyDateField']);
$day = $date->format('j F'); // '9 April'
$time = $date->format('g:i a'); // '9:05 am'
if ($day != $last_day) {
print $day . "\n";
$last_day = $day;
}
print $time . " " . $row->['NameOfMyThing'];
}这里的想法是记住您看到的最后一天,并且只在日期发生变化时输出日期。
(代码未经测试,仅针对可读性进行了优化)。
发布于 2011-06-22 13:56:45
有一个多维数组。
$datetime = array("April 21st" => array("5:00a.m", "4:00p.m"), "April 22nd" => array(...));然后,您可以分别基于日期和时间进行排序。
https://stackoverflow.com/questions/6435496
复制相似问题