2012-07-08 52 views
0

如果我有多個從不同的來源,如Facebook的飼料,Twitter的飼料和博客飼料提取數據的數組/對象,我將如何合併它們,以便將它們顯示爲混合集按日期排序?3 php數組合並顯示日期

+1

['array_merge()'](http://us.php.net/array_merge)數組合成一個,然後使用['usort()'](http://us.php.net/usort)與自定義排序功能,知道如何從每種類型的對象提取日期和比較兩個日期。 – DCoder 2012-07-08 05:15:28

回答

0

我會遍歷每個數組轉換不同的時間格式爲常見的一種,可能是一個UNIX時間戳這樣

strtotime($time); 

然後使用爲重點,以數組:

foreach ($fb_arrays as $fb_array) { 
    $key = strtotime($fb_array['time']); 
    $fb_array_by_time[$key] = $fb_array; 
} 

那我就

array_merge($array_one_by_time, $array_two_by_time, $array_three_by_time); 

那我就

asort()rasort()取決於你想

編輯排序的方向:

爲了避免衝突,你可以做到這一點

foreach ($events as $event) { 
    $key = strtotime($event['time']); 
    $key .= $network; 
    $n = 0; 
    while (isset($event_by_time[$key . $n])) { $n++; } 
    $event_by_time[$key . $n] = $event; 
} 

那麼鍵應該是這樣的:

123134223facebook0 
123134223twitter0 
123134225facebook0 
123134225facebook1 

sorti後ng與asort()

+0

如果一個數組中有兩個事件具有相同的時間戳,該怎麼辦? ':)' – DCoder 2012-07-08 05:21:51

+0

從理論上講,沒有什麼會是同一時間,特別是在時間戳秒,但我想這不是100%防彈! – Deminetix 2012-07-08 06:06:33

+0

或......將網絡分組在一起,您可能希望使'key = $ key。 $ n。 $ network' – Mark 2012-07-08 06:27:19