在以下数组中,我想将键顺序从高变为低(例如,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).
答案 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
)
)
答案 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代替