Con usort(), uasort() y uksort() podemos ordenar por funciones propias. Esto nos da mucha flexibilidad a la hora de ordenar. Ejemplos:
function muestraTabla($tabla) {
echo "<pre>";
print_r($tabla);
echo "</pre>";
}
function miOrden($a, $b) {
$la = strlen($a);
$lb = strlen($b);
return $la < $lb ? -1 : 1;
}
function acentos($name1, $name2) {
$patterns = array(
'a' => '(á|à|â|ä|Á|À|Â|Ä)',
'e' => '(é|è|ê|ë|É|È|Ê|Ë)',
'i' => '(í|ì|î|ï|Í|Ì|Î|Ï)',
'o' => '(ó|ò|ô|ö|Ó|Ò|Ô|Ö)',
'u' => '(ú|ù|û|ü|Ú|Ù|Û|Ü)',
'n '=>'(ñ)'
);
$name1 = preg_replace(array_values($patterns), array_keys($patterns), $name1);
$name2 = preg_replace(array_values($patterns), array_keys($patterns), $name2);
return strcasecmp($name1, $name2);
}
$array1 = array("no", "ño", "na", "ña","ánimo","oído","ópera","nzuelo");
usort($array1,'miOrden');
muestraTabla($array1);
usort($array1,'acentos');
muestraTabla($array1);