У меня есть массив имен файлов этой формы:
"A - 1.2 - План этажа. ПДФ"
Мне нужно сначала отсортировать массив по категории в следующем порядке:
1. Category: A
2. Category: ESC
3. Category: C
4. Category: M
5. Category: E
6. Category: P
Тогда мне нужно отсортировать массив по номерам, следующим за категорией.
Вот пример массива для сортировки:
$arr[0] = "A - 1.0 - Title Page.PDF";
$arr[1] = "A - 2.2 - Enlarged Floor Plans";
$arr[2] = "A - 2.1.0 - Structural Details.PDF";
$arr[3] = "E - 1.0 - Electrical Title Page.PDF";
$arr[4] = "A - 1.2 - Floor Plan.PDF";
$arr[5] = "P - 1.0 - Plumbing Title Page.PDF";
$arr[6] = "A - 2.1.1 - Structural Details.PDF";
$arr[7] = "C - 1.0 - Civil Title Page.PDF";
$arr[8] = "M - 1.0 - Mechanical Title Page.PDF";
$arr[9] = "ESC - 1.0 - Erosion Control Plan.PDF";
В идеале этот массив должен был бы стать
$arr[0] = "A - 1.0 - Title Page.PDF";
$arr[1] = "A - 1.2 - Floor Plan.PDF";
$arr[2] = "A - 2.1.0 - Structural Details.PDF";
$arr[3] = "A - 2.1.1 - Structural Details.PDF";
$arr[4] = "A - 2.2 - Enlarged Floor Plans";
$arr[5] = "ESC - 1.0 - Erosion Control Plan.PDF";
$arr[6] = "C - 1.0 - Civil Title Page.PDF";
$arr[7] = "M - 1.0 - Mechanical Title Page.PDF";
$arr[8] = "E - 1.0 - Electrical Title Page.PDF";
$arr[9] = "P - 1.0 - Plumbing Title Page.PDF";
У меня есть следующее регулярное выражение для правильной группировки имен файлов:
^([A-Z]+?) ?- ?([0-9]+)\.([0-9]+)(\.([0-9]+))?.*$
Я хочу, чтобы массив был отсортирован по группе 1, затем по группе 2, а затем по группе 3. Если группа 5 существует, то сортируйте последнюю по группе 5. Игнорировать группу 4.
Может быть проще отсортировать категории лексикографически. Если так, это было бы хорошо; хотя было бы предпочтительнее, если бы они были отсортированы в порядке, указанном выше.
Есть ли способ сделать это с помощью PHP?