次の配列があります。
Array
(
[0] => Array
(
[event_id] => 90
[event_date] => 2012-11-29
[multi] => 1
)
[1] => Array
(
[event_id] => 86
[event_date] => 2012-11-29
[multi] => 1
)
[2] => Array
(
[event_id] => 52
[event_date] => 2012-11-30
[multi] => 0
)
)
次のコードを使用してオンザフライで生成しています。
$dates = array();
$curr_date = array();
$iteration_date = null;
foreach ( $query as $q ) {
$event_id = $q->ID;
$curr_date['event_id'] = $event_id;
$curr_date['event_date'] = date('Y-m-d', get_post_meta($event_id, 'event_unix_date', true));
if ( empty($iteration_date) ) {
$iteration_date = $curr_date['event_date'];
$curr_date['multi'] = 1;
} elseif ( $iteration_date == $curr_date['event_date'] ) {
$curr_date['multi'] = 1;
} else {
$iteration_date = $curr_date['event_date'];
$curr_date['multi'] = 0;
}
array_push($dates, $curr_date);
}
これは、MySQL データベースの結果に基づいています。
私がやろうとしているの[event_date]
は[multi]
:その条件に応じて1、2、または3に。
基本的なロジックは次のとおりです。
が複数あるかどうかを確認します[event_date]
。存在する場合は、一致するすべての重複日付のカテゴリを確認します。すべての日付が X の場合[multi]
は 1 を入力し、すべての日付が Y の場合は 2 を入力し、日付が X と Y の場合は 3 を入力します。日付が 1 つしかない場合は、カテゴリに応じて 1 または 2 を入力します入っています。
クエリをループするだけで正しい軌道に乗っていると思いましたが (event_date による DESC です)、個々のエントリ カテゴリをチェックしてそれに基づいて入力することはできません。
誰かが私を正しい方向に向けることができますか?