我有一系列带有unixtimestamp的事件,我想根据年份显示它们。平均分段。
2015
Event 1
Event 2
Event 3
2014
Event 1
Event 2
Event 3
我做什么:
$yearlyEvents=array();
foreach ($events as $event) {
$eventPost = get_post($event->post_id);
$timestamp=$event->start;
$eventYear=gmdate("Y", $timestamp);
if($index=in_array($eventYear, $yearlyEvents, true)){
print_r($index);
}
else{
$tempObj['name']=$eventYear;
$tempObj['events']=$event;
$yearlyEvents[]=$tempObj;
}
}
但是没有得到理想的结果。有人帮忙吗?
答案 0 :(得分:1)
您需要将事件作为年份的子数组。
添加子数组,每年一个向其追加事件。
这是我的首选逻辑,请随意根据您的项目需求进行更改。
更正代码:
$yearlyEvents=array();
foreach ($events as $event) {
$eventPost = get_post($event->post_id);
$timestamp=$event->start;
$eventYear=gmdate("Y", $timestamp);
if($index=in_array($eventYear, $yearlyEvents, true)){
print_r($index);
}
else{
$tempObj['name']=$eventYear;
$tempObj['events']=$event;
$yearlyEvents[$eventYear][] = $tempObj; // Check here.
}
}
答案 1 :(得分:0)
首先,您需要以这样一种易于操作输出的格式从数据库获取结果。
在这里,您尝试按降序显示事件,按升序显示事件。所以首先得到数据库的结果,如
SELECT * FROM events ORDER by events.start DESC,events.post_id ASC
现在它的顺序很容易显示。循环并显示结果,直到明年找到。检查明年是否也会显示年份。