Existen las funciones uasort, uksort y usort que permiten definir una función de comparación a utilizar como criterio de comparación.
http://www.php.net/manual/es/function.uasort.php http://www.php.net/manual/es/function.uksort.php http://www.php.net/manual/es/function.usort.php
Te interesan para tu caso uksort o usort. Uasort no te sirve porque mantiene la asociación entre clave y valor (es decir, si asturias tiene el índice 0, este seguiría siendo 0 al ordenar).
Te dejo un ejemplo con una comparación sencilla, pero se puede complicar tanto como quieras:
Código PHP:
Ver original<?php
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a > $b) ? -1 : 1;
}
$a = array("santiago","asturias", "madrid", "leganes", "mallorca");
foreach ($a as $clave => $valor) {
echo "$clave: $valor\n";
}
?>