好的,我有一些代码可以创建一个数组,然后遍历该数组,并从其中一个项中获取一个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;
答案 0 :(得分: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;
<强>文档强>
DateTime::getTimestamp
- http://www.php.net/manual/en/datetime.gettimestamp.php array_merge
- http://php.net/manual/en/function.array-merge.php call_user_func_array
- http://php.net/manual/en/function.call-user-func-array.php ksort
- http://php.net/manual/en/function.ksort.php