3v4l.org

run code in 300+ PHP versions simultaneously
<?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