我有一个看起来像这样的数组:
$array = array(
'5' => 2,
'6' => 3,
'7' => 10,
'8' => 1
);
我希望它看起来像这样:
$array = array(
'5' => 1,
'6' => 2,
'7' => 3,
'8' => 10
);
键应保持不变,但值应按升序排列。使用sort()时,键将被删除并替换为从0开始的键。asort()将根据需要对值进行排序,但它将保持索引关联。 我尝试了排序,排序,排序,但是这些似乎都不是我需要的orderfunction。 我需要手动排序还是可以使用的功能?
在此先感谢您的提示。
答案 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
)