反向PHP数组ksort

反向PHP数组ksort,php,arrays,ksort,Php,Arrays,Ksort,我有一个数组,如下所示: Array( [31] => 1 [30] => 2 [29] => 3 [28] => 4 ) 然后,我使用ksort($array)将其排序为28、29、30和31,但问题是数字1-4与值一致,因此得到相反的结果。我想28变成1,29变成2等等 有没有办法不创建foreach循环并重建新数组来进行此切换?您可以翻转数组,对其进行排序,然后将其翻转回去: $array=array(31=>1,30=>2,29=

我有一个数组,如下所示:

Array(
    [31] => 1
    [30] => 2
    [29] => 3
    [28] => 4
)
然后,我使用
ksort($array)
将其排序为28、29、30和31,但问题是数字1-4与值一致,因此得到相反的结果。我想28变成1,29变成2等等


有没有办法不创建foreach循环并重建新数组来进行此切换?

您可以翻转数组,对其进行排序,然后将其翻转回去:

$array=array(31=>1,30=>2,29=>3,28=>4)

这将生成一个按键排序的数组,值为从0开始的整数:

Array (
    [28] => 0
    [29] => 1
    [30] => 2
    [31] => 3
)
维持现有价值 如果要保留现有值,请使用
array\u combine
功能将已排序的键与旧值合并:

$result = array_flip($array);
sort($result);
$result = array_combine($result, $array);
然后,生成的数组是:

Array
(
    [28] => 1
    [29] => 2
    [30] => 3
    [31] => 4
)
Array
(
    [28] => 1
    [29] => 2
    [30] => 3
    [31] => 4
)