1

我正在从我的数据库中提取一些与时间相关的笔记。

我对多维数组不太感兴趣,但我想将所有事件在它们发生的时间分组在一起。

这是我的一个查询:

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

一个示例输出可能是三行,第一列是时间,然后是注释,完成,然后是 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 回答