2010-10-26 27 views
0

假設我有一些小部件,並且每個小部件都有事件。每個事件都有一個唯一的時間戳和一個非唯一的值。我需要一個高效的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

你應該使用'='代替'=',你沒有連接字符串。 – deceze 2010-10-26 03:53:49

+0

+1謝謝。代碼發生了變化,這被忽略了。 – Mawg 2010-10-26 04:51:28

回答

3

由於您從數據庫中獲取此數據,是否可以將查詢更改爲僅返回帶有時間戳的記錄?這樣,一旦你找回數據,就不需要對數據做任何事情。

+0

我想我沒有解釋清楚。我會更新這個問題。 +1回覆。謝謝。 – Mawg 2010-10-26 04:52:11

1

你能只存儲到時間戳與時間戳一起相關聯的部件的參考?

+0

+1謝謝。看起來問題並不清楚,所以我已經更新了它。 – Mawg 2010-10-26 05:00:05

1

儘管你的編輯我仍然不認爲這是清楚它是什麼你想要做的事。

這是在排序順序檢索一些數據的鍛鍊?你想幫助你的數據庫SQL代碼或PHP代碼來處理它?我們正在談論的這些小部件和事件是什麼,我們在做什麼?

由於時間戳是相當大的指標即用(哈希?)

我不明白爲什麼一個時間戳會太大作爲一個指標來使用。你是在談論數據庫中的'索引'還是在PHP數組中使用'key'?無論哪種方式,我不知道它會是多大,如果你稱之爲時間戳是我想象的時間戳。

每個事件都有一個唯一的時間戳和一個非唯一值。

這似乎是不尋常 - 你的意思是它周圍的其他方式?也許如果你能說出我能更好地理解的事件。

+0

+1抱歉,不清楚。我已經更新了這個問題並希望這有幫助。 – Mawg 2010-10-26 04:59:32