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);