PHP:重新分配数组键

时间:2011-08-07 09:05:50

标签: php arrays key natsort

我有一系列数字从降序开始。当我添加到这个数组时,我添加到最后,然后执行natsort($times)。 $ times然后看起来像这样(由print_r获得):

Array
(
    [0] => 0.01
    [1] => 0.02
    [2] => 0.05
    [3] => 0.08
    [7] => 0.10   <-- Just added and natsorted
    [4] => 0.11
    [5] => 0.14
    [6] => 0.21
)

但是,我希望重新分配所有键,以便刚刚添加的0.10是数组索引4,这样可以很容易地看到新时间的位置。即“你的排名是$ arrayindex + 1”

除了将整个数组复制到新数组中以获取新密钥外,还有更好的方法吗?

3 个答案:

答案 0 :(得分:13)

您可以将sort [docs]SORT_NUMERIC一起使用,而不是natsort

sort($times, SORT_NUMERIC);

natsort不同,它重新索引数组。


排序后没有内置的方法来重新索引数组。在使用natsort排序后,你也可以使用array_values [docs]

$times = array_values($times);

这个正在复制数组。

答案 1 :(得分:6)

您可以使用array_values执行此操作。

$times=array_values($times);

答案 2 :(得分:2)

usort在排序后重新分配数组键,将其与strnatcmp一起使用:

usort( $times, 'strnatcmp' );