按值排序数组然后键

时间:2013-04-08 19:57:40

标签: php arrays sorting

我正在使用asort对一个简单的数组进行排序:

$arr = array('A'=>30, 'B'=>12, 'K'=>23, 'X'=>1, 'H'=>11, 'T'=>1, 'U'=1);

asort($arr)

产量

Array
(
    [A] => 30
    [K] => 23
    [B] => 12
    [H] => 11
    [X] => 1
    [T] => 1
    [Z] => 1
)

在一次调用中是否存在按值键排序的本机方式(同时保留键/值关系)?

例如,我希望我的结果能够像这样结束:

Array
(
    [A] => 30
    [K] => 23
    [B] => 12
    [H] => 11
    [T] => 1
    [X] => 1
    [Z] => 1
)

2 个答案:

答案 0 :(得分:1)

原生功能没有,但有一些方法可以轻松完成

PHP array multiple sort - by value then by key?

答案 1 :(得分:0)

<?php
$arr = array('A'=>30, 'B'=>12, 'K'=>23, 'X'=>1, 'H'=>11, 'T'=>1, 'U'=>1);

Function ArrSort ($Array){
    $tag = array();
    $num = array();

    foreach($Array as $key => $value){
        $tag[] = $key;
        $num[] = $value;
    }
    array_multisort($num, SORT_DESC, $tag, SORT_ASC, $Array);
    return $Array;

}

print_r(ArrSort($arr));
?>

输出:

Array
(
    [A] => 30
    [K] => 23
    [B] => 12
    [H] => 11
    [T] => 1
    [U] => 1
    [X] => 1
)

上面的块已被编辑成位于此处的原始帖子中的函数:PHP array multiple sort - by value then by key?