根据日期组织 - 最简单/优雅的方式

时间:2013-09-18 18:43:18

标签: php

好的,我有一些代码可以创建一个数组,然后遍历该数组,并从其中一个项中获取一个id和一个标题。

我想要的是能够根据日期进行组织。

现在你可以看到,我已经抓住了每个项目的日期,但是根据它我没有真正简单的组织方式。我想我可以提取实体ID,检查它上面的日期,然后按顺序排列,然后生成附加数据 - 这是最简单的方法吗?

$multi_reg_id = multi_reg_get_id();
  foreach ($multi_reg_id as $regid) {
    $node = node_load($regid->entity_id);
    $title = $node->title;
    $date = $node->field_event_date[LANGUAGE_NONE][0]['value'];
    $entity_id = (string)$regid->entity_id;

    $dt = new DateTime($date);
    $date = $dt->format('l, F d, Y - g:ia');
    $checkbox[$entity_id] = $title . " | " . $date;
        }


return $checkbox;

1 个答案:

答案 0 :(得分:1)

您可以将时间戳用作数组键,然后使用ksort进行排序。最后,使用call_user_func_arrayarray_merge

展平多维度
$multi_reg_id = multi_reg_get_id();

$output = array();
foreach ($multi_reg_id as $regid) {
    $node = node_load($regid->entity_id);
    $title = $node->title;
    $date = $node->field_event_date[LANGUAGE_NONE][0]['value'];
    $entity_id = (string)$regid->entity_id;

    $dt = new DateTime($date);
    $date = $dt->format('l, F d, Y - g:ia');

    if (!array_key_exists($dt->getTimestamp(), $output))
        $output[$dt->getTimestamp()] = array();
    $output[$dt->getTimestamp()][$entity_id] = $title . " | " . $date;
}

ksort($output);
$output = call_user_func_array('array_merge', $output);

return $output;

<强>文档