Ordenar array por tamanho em php

Três meios diferentes para a mesma finalidade:

Usando funções nativas do PHP (recomendado):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
array_multisort(array_map('strlen', $array), $array);
array_multisort(array_map('strlen', $array), $array);
array_multisort(array_map('strlen', $array), $array);

Esse é compatível com versões antigas do PHP:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
usort($array, 'sortByLength');
private static function sortByLength($a, $b) {
$difference = strlen($a) - strlen($b);
return $difference ?: strcmp($a, $b);
}
usort($array, 'sortByLength'); private static function sortByLength($a, $b) { $difference = strlen($a) - strlen($b); return $difference ?: strcmp($a, $b); }
usort($array, 'sortByLength');

private static function sortByLength($a, $b) {
    $difference =  strlen($a) - strlen($b);
    return $difference ?: strcmp($a, $b);
}

E esse pra PHP7+:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
usort($array, 'sortByLength');
private static function sortByLength($a, $b) {
return strlen($b) <=> strlen($a);
}
usort($array, 'sortByLength'); private static function sortByLength($a, $b) { return strlen($b) <=> strlen($a); }
usort($array, 'sortByLength');

private static function sortByLength($a, $b) {
    return strlen($b) <=> strlen($a);
}