<?php
$indexes = [
26 => ["namespace" => "X\\Y\\Zed"],
9 => ["namespace" => "A\\B\\See"],
3 => ["namespace" => "A\\B\\Bee"],
38 => ["namespace" => "A\\B\\C\\Dee"],
51 => ["namespace" => "X\\Wye"],
16 => ["namespace" => "A\\Sea"],
12 => ["namespace" => "A\\Bees"],
31 => ["namespace" => "M"],
];
uasort(
$indexes,
function($a, $b) {
$aParts = explode('\\', $a['namespace']);
$bParts = explode('\\', $b['namespace']);
$aCount = count($aParts);
$bCount = count($bParts);
return count($bParts) <=> count($aParts) ?: (array_pad($aParts, $bCount, '~') <=> array_pad($bParts, $aCount, '~'));
}
);
var_export($indexes);
preferences:
124.05 ms | 407 KiB | 5 Q