我需要一个有效的PHP数组查找

时间:2010-10-26 03:46:59

标签: php

假设我有一些小部件,每个小部件都有事件。每个事件都有一个唯一的时间戳和一个非唯一值。

由于时间戳相当大而无法用作索引(散列?),我正在添加如下事件:

$_SESSION['widgets']['datasets'][$i][] = 
                                    array('timestamp' => $ts, 'value' => $value);

但是,并非每个小部件在每个时间戳都有一个事件,因此存在差距。编辑:这意味着可能在周一,周二,周三进入小部件A,并且周一,周三,周五进入区域B.然后我将循环通过星期一,星期二,星期三,星期四,星期五,星期六,星期日,并想知道哪个小部件当天有活动以及它的价值是什么。

在从数据库中读取所有事件之后,我遍历所有已知的时间戳,然后遍历每个小部件以查看它是否具有带有该时间戳的事件。

而且我可能效率低下。

编码此代码的最佳方式是什么?

for each timestamp
   for each widget
      if the widget has an entry with the timestamp, get the value  <=== how?

3 个答案:

答案 0 :(得分:3)

由于您从数据库中获取此数据,是否可以将查询更改为仅返回带有时间戳的记录?这样,一旦你收回数据就没有必要对数据做任何事情了。

答案 1 :(得分:1)

您是否可以存储与时间戳关联的窗口小部件的引用以及时间戳?

答案 2 :(得分:1)

尽管你进行了编辑,我仍然不认为你想要做的是什么。

这是以排序顺序检索某些数据的练习吗?您是否希望获得有关数据库SQL代码或PHP代码的帮助以便以后处理它?我们正在讨论的这些小部件和事件是什么,我们用它们做了什么?

  

由于时间戳相当大而无法用作索引(哈希?)

我不明白为什么时间戳太大而无法用作索引。您是在谈论数据库中的“索引”还是PHP数组中使用的“密钥”?无论哪种方式,我都不会看到它会如何过大,如果你所谓的时间戳是我想象的时间戳。

  

每个事件都有唯一的时间戳和非唯一值。

这看起来很不寻常 - 你的意思是反过来吗?也许如果你能说出事件是什么我可以更好地理解。