PHP按元素ASC排序数组,然后按密钥ASC排序相同的值

时间:2014-11-24 21:44:42

标签: php

首先,我没有在stackoverflow中找到类似的主题,尽管有来自另一个用户的东西,但解决方案对我来说没有用(ASC / DESC)。

我有以下数组

Array
(
    [4] => 60
    [3] => 80
    [5] => 20
    [2] => 0
    [1] => 0
    [6] => 30
)

结果必须如下:

Array
(
    [1] => 0
    [2] => 0 
    [5] => 20
    [6] => 30
    [4] => 60
    [3] => 80
)

我只是想做而且感到困惑。

**

修改

**

asort()不适用于此数组

$array = array(
    4 => 60,
    3 => 80,
    5 => 20,
    1 => 0,
    2 => 0,
    6 => 30
);

asort的结果是:

Array
(
    [2] => 0
    [1] => 0
    [5] => 20
    [6] => 30
    [4] => 60
    [3] => 80
)

哪个错误,因为密钥2必须位于密钥1

之后

谢谢

2 个答案:

答案 0 :(得分:1)

尝试反向排序然后排序:

   $array = array(
    4 => 60,
    3 => 80,
    5 => 20,
    1 => 0,
    2 => 0,
    6 => 30
);
arsort($array);
asort($array);
print_r($array);

答案 1 :(得分:0)

编辑:稍微复杂......

$array = array(
    4 => 60,
    3 => 80,
    5 => 20,
    2 => 0,
    1 => 0,
    6 => 30
);

$keys = array_keys($array);
$values = array_values($array);
array_multisort($values, SORT_ASC, $keys, SORT_ASC);
$array = array_combine($keys, $values);
print_r($array);