La función puede recibir tres parámetros: el array, la columna o índice por la cual se quiere ordenar y opcionalmente el orden, ascendente o descendente. Por defecto ordena de forma ascendente.
Código PHP:
Ver original
function ordena_mat($mat,$col,$aod="ASC"){ foreach($mat as $k =>$val){//recorre la matriz o array if($k!=$col) //si la clave actual ($k) NO es la indicada para ordenar $ord[$k]=$val; //guarda en un arreglo temporal asociativo el valor. else return $mat; //si lo es, regresa la matriz. } if($aod=="ASC") //si el ordenamiento es ASCENDENTE else foreach($ord as $k=>$nms)//recorre el arreglo temporal $mat2[$k]=$mat[$k];//crea una segunda matriz matriz temporal con los valores de la primera, pero ya ordenados foreach($mat2 as $k =>$val){//recorre la segunda matriz $val=ordena_mat($val,$col,$aod);//vuelve a llamar a la función ordenar para dicho arreglo $mat2[$k]=$val;//y guarda el resultado ordenado en la matriz temporal } return $mat2;//finalmente regresa la matriz temporal ya ordenada } //no creo que falte aclararlo, pero se manda a llamar así: $mi_array=ordena_mat($mi_array,'indice','ASC'); //o $mi_array=ordena_mat($mi_array,'indice','DESC');
Posiblemente se pueda optimizar, pero la dejo para los que necesiten una función de ordenamiento y no tengan mucho tiempo para hacer alguna