Ordenar un array multidimensional por un valor en php

Ordenar un array multidimensional por un valor en php

Esta vez comenzaremos aprendiendo como ordenar un array especificando un valor dentro de este array multidimensional de forma ascendente o descendente.

En ocasiones hemos logrado ordenar un array creando nuestros propios métodos pero ahora tenemos la dificultad para hacerlo con un array multidimensional. Para este caso preparamos un ejercicio donde iremos explicando. Creamos la siguiente estructura en un archivo php.

<?php 

	//Ordenar un array multidimensional por un valor
	
	$array=[];
	$array[]=(object)["nombre"=>"Juan","edad"=>30];
	$array[]=(object)["nombre"=>"Maria","edad"=>26];
	$array[]=(object)["nombre"=>"David","edad"=>24];
	$array[]=(object)["nombre"=>"Ana","edad"=>27];
	$array[]=(object)["nombre"=>"Alfredo","edad"=>25];

	echo "Ordenar un array multidimensional por un valor <br>";
	print_r($array);
	
?>

En el ejemplo se preparó un grupo de nombre de personas y edades, lo que queremos es ordenarlos de forma descendente por edad.

Usaremos unas funciones predeterminadas para nuestro propósito. Donde pasaremos el array el índice con el cual deseamos ordenar, en nuestro caso la edad.

$columns = array_column($array, 'edad');
array_multisort($columns, SORT_ASC, $array);

Si deseamos ordenar de forma descendente solo cambiamos a SORT_DESC.

En array_column se indica el valor por el cual deseamos ordenar, después usamos array_multisort. Finalmente nuestro código quedará así.

<?php 

	//Ordenar un array multidimensional por un valor
	
	$array=[];
	$array[]=(object)["nombre"=>"Juan","edad"=>30];
	$array[]=(object)["nombre"=>"Maria","edad"=>26];
	$array[]=(object)["nombre"=>"David","edad"=>24];
	$array[]=(object)["nombre"=>"Ana","edad"=>27];
	$array[]=(object)["nombre"=>"Alfredo","edad"=>25];

	echo "Ordenar un array multidimensional por un valor <br>";
	print_r($array);
	
	$columns = array_column($array, 'edad');
	array_multisort($columns, SORT_ASC, $array);
	echo "<br>";
	print_r($array);
?>

Abrimos en el navegador e imprimirá los objetos del array ordenado con las edades de forma ascendente.

array ordenado multidimensional php

Publicar un comentario

Guardar mi nombre, correo electrónico y sitio web en este navegador la próxima vez que comente

0 Comentarios