PHP 按元素 ASC 排序数组,然后按键 ASC 对相同的值进行排序


PHP Sort Array By Element ASC and then by key ASC for same values

首先,我在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
);

排序的结果是:

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

这是错误的,因为键 2 必须在键 1 之后

谢谢

尝试反向排序,然后排序:

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

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

$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);