Есть ли способ для 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 .