反向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
)