1

わかりました、配列を作成し、その配列を反復処理して、項目の 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_arrayandで平坦化し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 に答える