假设我有一些小部件,每个小部件都有事件。每个事件都有一个唯一的时间戳和一个非唯一值。
由于时间戳相当大而无法用作索引(散列?),我正在添加如下事件:
$_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?
答案 0 :(得分:3)
由于您从数据库中获取此数据,是否可以将查询更改为仅返回带有时间戳的记录?这样,一旦你收回数据就没有必要对数据做任何事情了。
答案 1 :(得分:1)
您是否可以存储与时间戳关联的窗口小部件的引用以及时间戳?
答案 2 :(得分:1)
尽管你进行了编辑,我仍然不认为你想要做的是什么。
这是以排序顺序检索某些数据的练习吗?您是否希望获得有关数据库SQL代码或PHP代码的帮助以便以后处理它?我们正在讨论的这些小部件和事件是什么,我们用它们做了什么?
由于时间戳相当大而无法用作索引(哈希?)
我不明白为什么时间戳太大而无法用作索引。您是在谈论数据库中的“索引”还是PHP数组中使用的“密钥”?无论哪种方式,我都不会看到它会如何过大,如果你所谓的时间戳是我想象的时间戳。
每个事件都有唯一的时间戳和非唯一值。
这看起来很不寻常 - 你的意思是反过来吗?也许如果你能说出事件是什么我可以更好地理解。