PHP: переназначить ключи массива - PullRequest
4 голосов
/ 07 августа 2011

У меня есть массив чисел в порядке убывания. Когда я добавляю в этот массив, я добавляю в конец, а затем делаю 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 ]

14 голосов
/ 07 августа 2011

Вы можете использовать sort [документы] с SORT_NUMERIC вместо natsort:

sort($times, SORT_NUMERIC);

В отличие от natsort, он переиндексирует массив.


Не существует встроенного способа переиндексации массива после / во время сортировки. Вы также можете использовать array_values [docs] после сортировки с natsort:

$times = array_values($times);

- это копирование массива.

7 голосов
/ 07 августа 2011

Вы можете сделать это с помощью array_values.

$times=array_values($times);
2 голосов
/ 07 августа 2011

usort переназначает ключи массива после сортировки, используйте его с strnatcmp :

usort( $times, 'strnatcmp' );
...