5

我有一个按降序排列的数字数组。当我添加到这个数组时,我添加到最后,然后执行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”

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

4

3 回答 3

20

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

sort($times, SORT_NUMERIC);

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


排序后/排序时没有内置的方法来重新索引数组。您还可以使用array_values [docs]排序后使用natsort

$times = array_values($times);

复制数组。

于 2011-08-07T09:09:02.833 回答
8

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

$times=array_values($times);
于 2011-08-07T09:09:38.277 回答
2

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

usort( $times, 'strnatcmp' );
于 2011-08-07T09:18:22.593 回答