Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

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?

share|improve this question
add comment

3 Answers

up vote 4 down vote accepted

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.

share|improve this answer
 
Why should he? Is this faster? –  Phpdna Aug 7 '11 at 9:13
 
@Jitamaro: What do you mean? I mean he should use sort instead of natsort. This will be faster (well, depends on what array_values is doing under the hood, but it is likely that calling only one method is faster than calling two). –  Felix Kling Aug 7 '11 at 9:14
 
sort($times, SORT_NUMERIC); –  Phpdna Aug 7 '11 at 9:18
 
@downvoter: Please explain. Thank you! –  Felix Kling Aug 7 '11 at 9:19
 
sort($times, SORT_NUMERIC); worked perfectly for me as an alternative to natsort –  Kevin Duke Aug 7 '11 at 9:21
add comment

You can do this with array_values.

$times=array_values($times);
share|improve this answer
add comment

usort reassigns array keys after sorting, use it with strnatcmp:

usort( $times, 'strnatcmp' );
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.