Ordenar un array multidimensional por uno de sus campos

En un pequeño ejemplo le voy a dejar la forma de usar una función para poder ordenar un array multidimensional por uno de sus campos.  Esta función me toco crearla para lograr mostrar un estado de cuenta de forma descendiente, recuerde que los cálculos no son guardados en una tabla de una Base de Datos, por lo que debe ser calculado a medida que se van imprimiendo los valores y ordenado por fecha de forma ascendiente, todo estado de cuneta tiene un valor inicial, incrementos y decrementos y como resultado por cada fila el saldo final.

Habiendo explicado esto, le muestro a continuación la función creada con varios ejemplos de ejecución:

La forma de usarla es muy sencilla, introduzca como primer parámetro el array a ordenar, luego el campo por el cual desean ordenar que puede ser numérico o texto y por último true o 1 (uno) si lo desean de forma descendiente.

function ordernarArray ($ArrayaOrdenar, $por_este_campo, $descendiente = false) {
	$posicion = array();
	$NuevaFila = array();
	foreach ($ArrayaOrdenar as $clave => $fila) {
		$posicion[$clave] = $fila[$por_este_campo];
		$NuevaFila[$clave] = $fila;
	}
	if ($descendiente) {
		arsort($posicion);
	} else {
		asort($posicion);
	}
	$ArrayOrdenado = array();
	foreach ($posicion as $clave => $pos) {
		$ArrayOrdenado[] = $NuevaFila[$clave];
	}
	return $ArrayOrdenado;
} //fin de la funcion
/*
Creamos un array de prueba
*/
$ArrPrueba[1]=array("posicion"=>1,"nombre"=>"Johan","profesion"=>"Informatico");
$ArrPrueba[2]=array("posicion"=>2,"nombre"=>"Jennifer","profesion"=>"Administradora");
$ArrPrueba[3]=array("posicion"=>3,"nombre"=>"Oraida","profesion"=>"Informatica");
$ArrPrueba[4]=array("posicion"=>4,"nombre"=>"Angel","profesion"=>"Contador");

echo "-- <b>Por nombre de forma Ascendiente:</b><br>";
$ArrPrueba=ordernarArray($ArrPrueba,"nombre");
foreach($ArrPrueba as $col => $info){
	echo "=> ".$info["posicion"]."_ ".$info["nombre"]." es ".$info["profesion"]."<br>";
}
echo "<br>-- <b>Por nombre de forma Descendiente:</b><br>";
$ArrPrueba=ordernarArray($ArrPrueba,"nombre",true);
foreach($ArrPrueba as $col => $info){
	echo "=> ".$info["posicion"]."_ ".$info["nombre"]." es ".$info["profesion"]."<br>";
}

echo "<br>-- <b>Por posicion de forma Descendiente:</b><br>";
$ArrPrueba=ordernarArray($ArrPrueba,"posicion",true);
foreach($ArrPrueba as $col => $info){
	echo "=> ".$info["posicion"]."_ ".$info["nombre"]." es ".$info["profesion"]."<br>";
}

echo "<br>-- <b>Por profesion de forma Ascendiente:</b><br>";
$ArrPrueba=ordernarArray($ArrPrueba,"profesion");
foreach($ArrPrueba as $col => $info){
	echo "=> ".$info["posicion"]."_ ".$info["nombre"]." es ".$info["profesion"]."<br>";
}

Publicado por Johan Piña

Soy Programador Web desde hace 8 años, tengo experiencia en PHP, MySQL, HTML5, CSS3, JQuery. En cuanto a mi servicio como WebMaster ayudo a posicionar sitios web por las palabras claves que más le convengan, mejoro imagen corporativa, asesoro y mucho más.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.