我有問題以我想要的方式排序數組。Array按時間戳排序PHP
這是我的陣列的輸出示例:http://pastebin.com/GJNBmqL7
數據來自各種數據庫一次,所以我在我把數據放入數組的方式有限。
[2]總是包含一個linux時間戳。現在我想讓整個數組按照該時間戳排序,並且首先使用最低值。
我該如何做到這一點?
我有問題以我想要的方式排序數組。Array按時間戳排序PHP
這是我的陣列的輸出示例:http://pastebin.com/GJNBmqL7
數據來自各種數據庫一次,所以我在我把數據放入數組的方式有限。
[2]總是包含一個linux時間戳。現在我想讓整個數組按照該時間戳排序,並且首先使用最低值。
我該如何做到這一點?
這裏一個array_multisort例如:
foreach ($array as $key => $node) {
$timestamps[$key] = $node[2];
}
array_multisort($timestamps, SORT_ASC, $array);
使用usort接受自定義函數數組進行排序:
你的函數可能看起來像:
function cmp($a, $b)
{
if ($a[2] == $b[2]) {
return 0;
}
return ($a[2] < $b[2]) ? -1 : 1;
}
使用usort並創建自己的功能,http://php.net/manual/en/function.usort.php
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");
這可能很簡單r將數據插入到單個臨時表中,然後使用ORDER BY時間戳選擇它
您可以簡單地通過使用自定義排序來完成此操作。因此,假如你的郵戳總是指標2:
function sortArray($a1, $a2){
if ($a1[2] == $a2[2]) return 0;
return ($a1[2] > $a2[2]) ? -1 : 1;
}
usort($array, "sortArray");
usort是最簡單的工作,但你也可以檢查出array_multisort。
這可以用下面的代碼來實現。
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']; 等。
謝謝,這就像一個魅力。 – 2011-05-10 11:49:02