<?php
$array1 = $array2 = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png');
sort($array1);
echo "Обычная сортировка\n";
print_r($array1);
natcasesort($array2);
echo "\nNatural order сортировка (без учета регистра)\n";
print_r($array2);
?>
Результат:
Обычная сортировка
Array
(
[0] => IMG0.png
[1] => IMG3.png
[2] => img1.png
[3] => img10.png
[4] => img12.png
[5] => img2.png
)
Natural order сортировка (без учета регистра)
Array
(
[0] => IMG0.png
[4] => img1.png
[3] => img2.png
[5] => IMG3.png
[2] => img10.png
[1] => img12.png
)
затем когда массив будет отсортирован прогнать его через цикл, разбивая каждый элемент на символы и сравнивая с предыдущим элементом, на совпадение символов. Если элементы совпадают, пушить в новый массив, если элементы не совпадают, создавать ещё один новый массив и пушить уже в него. Ну я бы так сделал, может есть более простой способ.