<?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']));
preferences:
23.65 ms | 407 KiB | 5 Q