1

データベースから時間に関連付けられたメモをいくつか引き出しています。

私は多次元配列に熱中しているわけではありませんが、すべてのイベントをそれらが発生した時間でグループ化したいと考えています。

これが私のクエリの1つです:

SELECT TIME(date) AS time, followupNote, completed, entityRef
FROM entity_followups
WHERE userRef = ?
AND DAY(date) = ?
AND MONTH(date) = ?
AND YEAR(date) = ?

この例の出力は 3 つの行で、最初の列が時間、次にメモ、完了、entityRef の順に表示されます。

同じ時間の行を配列にグループ化する必要があります。

Array (
    [0] => Array (
        [0] => 12:00:00
        [1] => Array (
            [0] => note
            [1] => completed
            [2] => entityRef
        )
        [2] => Array (
            [0] => note2
            [1] => completed2
            [2] => entityRef2
        )
    )
)

しかし後で、最上位配列に追加する必要がある他の種類のイベントを収集する他のクエリがあり、イベントがサブ配列内のイベントと同じ時刻を持つ場合は、それに追加する必要があります。

4

1 に答える 1

2

時間と価値を得るには、既存のコードで十分だと思います。したがって、これらのアイテムは、使用することを選択した変数またはデータ構造に含まれます。この回答の目的のために、これらの値が個々の変数にすでに存在していると仮定します:$time、、、、および。さらに、結果が配列にロードされていると仮定します$value[0]$value[1]$value[2]$timesAndValues[]

$timesAndValues[]重要なのは、対応する時間に配列にインデックスを付けることだと思います。

if (isset($timesAndValues[$time]))
{ //The corresponding sub-array already exists, so we just need to load it

  //Push the array of values into the sub-array 
  array_push($timesAndValues[$time], $value);
}
else
{ //The corresponding sub-array does not exist yet, so we need to create it and load it

  //Create the sub-array
  $timesAndValues[$time] = array($time);

  //Push the array of values into the sub-array
  array_push($timesAndValues[$time], $value);
}
于 2012-05-09T14:48:16.007 に答える