2011-05-10 363 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']; 等。