数组按时间戳排序PHP

时间:2011-05-10 11:18:35

标签: php arrays sorting

我按照我想要的方式排序数组有问题。

这是我的数组的示例输出:http://pastebin.com/GJNBmqL7

数据同时来自各种数据库,因此我将数据放入数组的方式受到限制。

[2]总是包含一个linux时间戳。现在我希望整个数组按时间戳排序,首先是最低值。

我怎样才能完成这项工作?

8 个答案:

答案 0 :(得分:11)

使用接受自定义函数的usort来排序数组:

usort

您的功能可能类似于:

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

答案 1 :(得分:7)

您只需使用自定义排序即可完成此操作。因此,假设您的日期戳始终为索引2:

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

usort($array, "sortArray");

答案 2 :(得分:7)

此处有一个array_multisort示例:

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

答案 3 :(得分:5)

usort是最容易使用的,但您也可以查看array_multisort

答案 4 :(得分:0)

使用usort并创建自己的函数http://php.net/manual/en/function.usort.php

答案 5 :(得分: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");

答案 6 :(得分:0)

将数据插入单个临时表可能更容易,然后使用ORDER BY时间戳将其选中

答案 7 :(得分:0)

这可以通过以下代码实现。

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

});

这将导致$ variable的排序数组,假设时间戳为 $变量[0] [ '时间戳']; $变量[0] [ '时间戳'];  等等。