PHP natsort поддерживает индекс

Есть ли способ для natsort также изменить индексы?

Т.е.

$array = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png'); natsort($array); Array ( [0] => IMG0.png [4] => img1.png [3] => img2.png [5] => IMG3.png [2] => img10.png [1] => img12.png ) 

Но я хочу:

 $array = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png'); natsort($array); Array ( [0] => IMG0.png [1] => img1.png [2] => img2.png [3] => IMG3.png [4] => img10.png [5] => img12.png ) 

array_values будет эффективно переиндексировать любой массив, переданный ему с последовательными целыми ключами. Поэтому вам просто нужно сделать:

 natsort($array); $array = array_values($array); 

Просто используйте array_values чтобы получить значения массива и разбить связь ключа и значения:

 <?php $tarray = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png'); natsort($tarray); $tarray = array_values($tarray); ?> 

Так:

 <?php $tarray = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png'); print_r($tarray); natsort($tarray); $tarray = array_values($tarray); print_r($tarray); ?> 

выходы:

 Array ( [0] => IMG0.png [1] => img12.png [2] => img10.png [3] => img2.png [4] => img1.png [5] => IMG3.png ) Array ( [0] => IMG0.png [1] => IMG3.png [2] => img1.png [3] => img2.png [4] => img10.png [5] => img12.png ) 

Смотрите комментарий на natsort .