将数组从高到低排序

时间:2014-11-06 07:36:34

标签: php arrays sorting

在以下数组中,我想将键顺序从高变为低(例如,2014年的数据首先出现)。

print_r($array); 

输出:

Array
(
    [0] => Array
        (
            [year] => 2013
            [name] => xx
        )

    [1] => Array
        (
            [year] => 2014
            [name] => xx
        )
)

我尝试过使用rsort,但只返回“1”。

$array = rsort($array);
print_r($array);    //1
var_dump($array);   //bool(true).

4 个答案:

答案 0 :(得分:5)

rsort()仅适用于一维数组。你有一个二维数组,所以你需要使用一个不同的函数,如usort(),它允许你使用用户定义的比较函数进行排序:

usort($data, function ($a, $b) {
    return $a['year'] < $b['year'];
});

输出:

Array
(
    [0] => Array
        (
            [year] => 2014
            [name] => xx
        )

    [1] => Array
        (
            [year] => 2013
            [name] => xx
        )

)

Working demo

答案 1 :(得分:1)

rsort具有boolean的返回值,所以只需简单地使用它:

rsort($array);

而且,rsort按相反的顺序排序数组值,而不是数组键,请查看文档:

http://php.net/manual/en/function.rsort.php

所以反向顺序只需使用krsort - 按相反顺序对数组进行排序:

http://php.net/manual/en/function.krsort.php

所以你的代码:

krsort($array);

答案 2 :(得分:1)

更改

$array = rsort($array);
print_r($array);  

rsort($array);
print_r($array);  

答案 3 :(得分:0)

usort($array, function($item1, $item2){
   if ($item1->year > $item2->year ) return true;
   else return false;
})

如果您想按年订购,如果您想按键订购,可以使用uksort代替