<?php
$arr = [
'children' => [
'a.class-1.php' => [],
'a' => [],
'a-1.class-1' => [],
'a.class.php' => [],
'a.class' => [],
'a-1.class-1.php-1' => [],
'a-1.class.php' => [],
'a-1' => [],
'a.class-1.php-1' => [],
'a.class.php-1' => [],
]
];
uksort($arr['children'], function($a, $b){
$a = explode('.', $a);
$b = explode('.', $b);
$s = '';
$i = 0;
while (isset($a[$i]) && isset($b[$i]) && $a[$i] == $b[$i]) {
$s .= $a[$i++] . '.';
}
return $s . ($a[$i] ?? '') <=> $s . ($b[$i] ?? '');
});
print_r(array_keys($arr['children']));
- Output for 7.4.28, 8.1.23 - 8.1.33, 8.2.10 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
- Array
(
[0] => a
[1] => a.class
[2] => a.class.php
[3] => a.class.php-1
[4] => a.class-1.php
[5] => a.class-1.php-1
[6] => a-1
[7] => a-1.class.php
[8] => a-1.class-1
[9] => a-1.class-1.php-1
)
preferences:
81.28 ms | 407 KiB | 5 Q