Três meios diferentes para a mesma finalidade:
Usando funções nativas do PHP (recomendado):
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:
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+:
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); }