我有一个数组,它长这样:
Array(
[31] => 1
[30] => 2
[29] => 3
[28] => 4
)
我接着使用ksort($array)
对数组进行排序,排序结果为28、29、30和31,但问题在于1-4这些数字与值相关联,因此顺序被颠倒了。我希望28变成1,29变成2等等。
有没有一种方法可以在不创建foreach循环和重构新数组的情况下完成这个转换?
$result = array_flip($array);
sort($result);
$result = array_flip($result);
Array (
[28] => 0
[29] => 1
[30] => 2
[31] => 3
)
如果您想保留现有值,则可以使用array_combine
函数将排序后的键与旧值合并:
$result = array_flip($array);
sort($result);
$result = array_combine($result, $array);
Array
(
[28] => 1
[29] => 2
[30] => 3
[31] => 4
)