1

好的,我有一些代码可以创建一个数组,然后遍历该数组,并从其中一个项目中获取一个 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;
4

1 回答 1

1

您可以将时间戳用作数组键,然后用于ksort排序。call_user_func_array最后,用和展平多维array_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;

文档

于 2013-09-18T18:55:48.433 回答