按值对数组排序,同时保留键顺序

时间:2020-08-07 08:22:21

标签: php arrays sorting

我有一个看起来像这样的数组:

$array = array(
'5' => 2,
'6' => 3,
'7' => 10,
'8' => 1
);    

我希望它看起来像这样:

$array = array(
'5' => 1,
'6' => 2,
'7' => 3,
'8' => 10
);

键应保持不变,但值应按升序排列。使用sort()时,键将被删除并替换为从0开始的键。asort()将根据需要对值进行排序,但它将保持索引关联。 我尝试了排序,排序,排序,但是这些似乎都不是我需要的orderfunction。 我需要手动排序还是可以使用的功能?

在此先感谢您的提示。

1 个答案:

答案 0 :(得分:5)

您可以使用array_keys提取数组的键,使用sort对值进行排序,然后使用array_combine将键与排序后的值组合在一起:

$array = array(
'5' => 2,
'6' => 3,
'7' => 10,
'8' => 1
);  
$keys = array_keys($array);
sort($array);
$array = array_combine($keys, $array);
print_r($array);

输出:

Array
(
    [5] => 1
    [6] => 2
    [7] => 3
    [8] => 10
)

Demo on 3v4l.org

相关问题