PHP: Reassign array keys

dukevin picture dukevin · Aug 7, 2011 · Viewed 12.6k times · Source

I have an array of numbers from descending order. When I add to this array, I add to the end and then do natsort($times). $times then looks like this (obtained by 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
)

However, I wish to reassign all the keys so that the just-added 0.10 is array index 4 making it easy to see what place the new time is in. ie "your ranking is $arrayindex+1"

Besides copying this whole array into a new array to get new keys, is there a better way?

Answer

Felix Kling picture Felix Kling · Aug 7, 2011

You can use sort [docs] with SORT_NUMERIC, instead of natsort:

sort($times, SORT_NUMERIC);

Unlike natsort, it re-indexes the array.


There is no built in way to re-index the array after/while sorting. You could also use array_values [docs] after sorting with natsort:

$times = array_values($times);

This is copying the array though.