按DESC顺序排序数组

问题描述 投票:10回答:4

我如何通过数组键对此数组进行排序

array(
4 => 'four',
3 => 'three',
2 => 'two',
1 => 'one',
)

像这样

array(
1 => 'one',
2 => 'two',
3 => 'three',
4 => 'four',
)
php arrays sorting
4个回答
22
投票

如果您只想撤消订单,请使用array_reverse

$reverse = array_reverse($array, true);

第二个参数用于保留密钥。


30
投票

如果要按DESC顺序对键进行排序,请使用:

krsort($arr);

如果要按DESC顺序对值进行排序并维护索引关联,请使用:

arsort($arr);

如果要按DESC自然顺序对值进行排序并维护索引关联,请使用:

natcasesort($arr);
$arr = array_reverse($arr, true);

3
投票

你有一个数组,你想按相反的顺序对它进行排序 - 你可以使用krsort函数:

按键以相反顺序对数组进行排序,保持数据关联的关键。这主要用于关联数组。

在你的情况下,你有这样的代码:

$arr = array(
    1 => 'one',
    2 => 'two',
    3 => 'three',
    4 => 'four',
);

krsort($arr);
var_dump($arr);

这会得到这种输出:

$ /usr/local/php-5.3/bin/php temp.php
array(4) {
  [4]=>
  string(4) "four"
  [3]=>
  string(5) "three"
  [2]=>
  string(3) "two"
  [1]=>
  string(3) "one"
}

作为sidenode:如果你想按值排序,你可以使用arsort - 但它似乎不是你想要的,在这里。


0
投票

尝试krsort() - 使用数组键反向排序,而rsort将对数组值进行排序。

© www.soinside.com 2019 - 2024. All rights reserved.