根据日期分隔数组对象

时间:2015-07-29 11:18:31

标签: php wordpress

我有一系列带有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;
            }
        }

但是没有得到理想的结果。有人帮忙吗?

2 个答案:

答案 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

现在它的顺序很容易显示。循环并显示结果,直到明年找到。检查明年是否也会显示年份。