2011-05-10 362 views
8

我有問題以我想要的方式排序數組。Array按時間戳排序PHP

這是我的陣列的輸出示例:http://pastebin.com/GJNBmqL7

數據來自各種數據庫一次,所以我在我把數據放入數組的方式有限。

[2]總是包含一個linux時間戳。現在我想讓整個數組按照該時間戳排序,並且首先使用最低值。

我該如何做到這一點?

回答

6

這裏一個array_multisort例如:

foreach ($array as $key => $node) { 
    $timestamps[$key] = $node[2]; 
} 
array_multisort($timestamps, SORT_ASC, $array); 
+0

謝謝,這就像一個魅力。 – 2011-05-10 11:49:02

11

使用usort接受自定義函數數組進行排序:

usort

你的函數可能看起來像:

function cmp($a, $b) 
{ 
    if ($a[2] == $b[2]) { 
     return 0; 
    } 
    return ($a[2] < $b[2]) ? -1 : 1; 
} 
0
function cmp($a, $b) 
{ 
    if ($a[2] == $b[2]) { 
     return 0; 
    } 
    return ($a[2] < $b[2]) ? -1 : 1; 
} 

$data = array(/* your data */); 

usort($data, "cmp"); 
0

這可能很簡單r將數據插入到單個臨時表中,然後使用ORDER BY時間戳選擇它

6

您可以簡單地通過使用自定義排序來完成此操作。因此,假如你的郵戳總是指標2:

function sortArray($a1, $a2){ 
    if ($a1[2] == $a2[2]) return 0; 
    return ($a1[2] > $a2[2]) ? -1 : 1; 
} 

usort($array, "sortArray"); 
0

這可以用下面的代碼來實現。

usort($variable, function ($a, $b) { 
if ($a['timestamp'] == $b['timestamp']) { 
    return 0; 
} 
return ($a['timestamp'] < $b['timestamp']) ? 1 : -1; 

});

這將導致$變量的排序數組,假設時間戳在 $ variable [0] ['timestamp']; $ variable [0] ['timestamp']; 等。