帮我用usort()对这个php数组进行排序

时间:2011-02-06 03:11:45

标签: php arrays sorting multidimensional-array usort

我有一个看起来像

的数据结构
Array
(
[0] => Array
    (
        [0] => something
        [1] => 1296986500
    )

[1] => Array
    (
        [0] => something else
        [1] => 1296600100
    )

[2] => Array
    (
        [0] => another thing
        [1] => 1296831265
    )
)

我正在尝试根据整数(即unix时间戳)对数组进行排序。以下功能对我来说是正确的,但不按我想要的方式排序。

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

注意  在类中调用此函数时,OO语法如下

uasort($_data, array($this, 'cmp'));

2 个答案:

答案 0 :(得分:3)

按时间顺序对您的时间戳进行排序;对于降序,翻转第二个比较(即将$a[1] < $b[1]更改为$a[1] > $b[1]):

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

答案 1 :(得分:2)

您可以将时间戳设置为枢轴。并使用array_multisort()。

<?php
// Obtain a list of columns
foreach ($data as $key => $row) {
    $time[$key]  = $row[1]; //unix timestamp 
}


array_multisort( $time, SORT_ASC, $data);
?>