Cómo ordenar un array de matrices asociativas por el valor de una clave dada en PHP
-
Usar la función
array_multisort()
para ordenar un array de matrices asociativas por el valor de una clave dada en PHP -
Usa la función
usort()
para ordenar un array de matrices asociativas por el valor de una clave dada en PHP
Este artículo introducirá métodos para ordenar un array
de matrices asociativas por el valor de una clave dada en PHP.
- Usando la función
array_multisort()
- Usando la función
usort()
Usar la función array_multisort()
para ordenar un array de matrices asociativas por el valor de una clave dada en PHP
Podemos usar la función incorporada array_multisort()
para ordenar un array
de arrays asociativos por el valor de una clave dada. Puede ordenar muchas matrices a la vez o un array
multidimensional. La sintaxis correcta para utilizar esta función es la siguiente
str_replace($arrayName, $sort_order, $sort_flags);
La función incorporada array_multisort()
tiene tres parámetros. Los detalles de sus parámetros son los siguientes
Parámetros | Descripción | |
---|---|---|
$arrayName |
obligatorio | Es la array que queremos clasificar. |
$sort_order |
opcional | Nos dice el orden en el que vamos a ordenar nuestra array. Puede ser SORT_ASC para el orden ascendente y SORT_DESC para el orden descendente. Su valor por defecto es SORT_ASC . |
$sort_flags |
opcional | Habla de las opciones de clasificación. Puedes leerlo aquí. |
Esta función devuelve VERDADERO si tiene éxito. En caso contrario, devuelve FALSO.
El siguiente programa muestra cómo podemos usar la función array_multisort()
para ordenar un array de arrays asociativos por el valor de una clave dada.
<?php
$result = array(
array("firstname"=>"Olivia", "marks"=>85),
array("firstname"=>"Jacob", "marks"=>60),
array("firstname"=>"Henry", "marks"=>100),
array("firstname"=>"Lili", "marks"=>40),
array("firstname"=>"Stefan", "marks"=>5),
array("firstname"=>"Bonnie", "marks"=>97),
);
$marks = array();
foreach ($result as $key => $row)
{
$marks[$key] = $row['marks'];
}
array_multisort($marks, SORT_DESC, $result);
print_r($result);
?>
Hemos creado un array $marks
que contiene las marcas de la array
original. Después de eso, hemos usado la función array_multisort()
para ordenar el array $marcas
en base a el array $result
. La salida será el array $result
ordenada.
Resultado:
Array
(
[0] => Array
(
[firstname] => Henry
[marks] => 100
)
[1] => Array
(
[firstname] => Bonnie
[marks] => 97
)
[2] => Array
(
[firstname] => Olivia
[marks] => 85
)
[3] => Array
(
[firstname] => Jacob
[marks] => 60
)
[4] => Array
(
[firstname] => Lili
[marks] => 40
)
[5] => Array
(
[firstname] => Stefan
[marks] => 5
)
)
La array
se ordena en orden descendente por el valor de la clave de las marcas.
Usa la función usort()
para ordenar un array de matrices asociativas por el valor de una clave dada en PHP
En PHP, también podemos usar la función usort()
para ordenar un array
de arrays asociativos por el valor de una clave dada. Esta función ordena el array
usando una función definida por el usuario. La sintaxis correcta para usar esta función es la siguiente:
preg_replace($arrayName, $functionName);
La función usort()
acepta dos parámetros. El detalle de sus parámetros es el siguiente
Parámetros | Descripción | |
---|---|---|
$arrayName |
obligatorio | Es la array que queremos clasificar |
$functionName |
obligatorio | Es la función definida por el usuario la que clasificará el array pasada. |
Devuelve VERDADERO si tiene éxito, FALSO si no. El programa que ordena el array es el siguiente:
<?php
function DescSort($item1,$item2)
{
if ($item1['marks'] == $item2['marks']) return 0;
return ($item1['marks'] < $item2['marks']) ? 1 : -1;
}
$result = array(
array("firstname"=>"Olivia", "marks"=>85),
array("firstname"=>"Jacob", "marks"=>60),
array("firstname"=>"Henry", "marks"=>100),
array("firstname"=>"Lili", "marks"=>40),
array("firstname"=>"Stefan", "marks"=>5),
array("firstname"=>"Bonnie", "marks"=>97),
);
usort($result,'DescSort');
print_r($result);
?>
Resultado:
Array
(
[0] => Array
(
[firstname] => Henry
[marks] => 100
)
[1] => Array
(
[firstname] => Bonnie
[marks] => 97
)
[2] => Array
(
[firstname] => Olivia
[marks] => 85
)
[3] => Array
(
[firstname] => Jacob
[marks] => 60
)
[4] => Array
(
[firstname] => Lili
[marks] => 40
)
[5] => Array
(
[firstname] => Stefan
[marks] => 5
)
)
Para la ordenación ascendente, la función será:
<?php
function AscSort($item1,$item2)
{
if ($item1['marks'] == $item2['marks']) return 0;
return ($item1['marks'] > $item2['marks']) ? 1 : -1;
}
$result = array(
array("firstname"=>"Olivia", "marks"=>85),
array("firstname"=>"Jacob", "marks"=>60),
array("firstname"=>"Henry", "marks"=>100),
array("firstname"=>"Lili", "marks"=>40),
array("firstname"=>"Stefan", "marks"=>5),
array("firstname"=>"Bonnie", "marks"=>97),
);
usort($result,'AscSort');
print_r($result);
?>
Resultado:
Array
(
[0] => Array
(
[firstname] => Stefan
[marks] => 5
)
[1] => Array
(
[firstname] => Lili
[marks] => 40
)
[2] => Array
(
[firstname] => Jacob
[marks] => 60
)
[3] => Array
(
[firstname] => Olivia
[marks] => 85
)
[4] => Array
(
[firstname] => Bonnie
[marks] => 97
)
[5] => Array
(
[firstname] => Henry
[marks] => 100
)
)
Artículo relacionado - PHP Array
- Cómo determinar la primera y la última iteración en un bucle de foreach en PHP
- Cómo convertir un array a una cadena en PHP
- Cómo obtener el primer elemento de un array en PHP
- Cómo hacer eco o imprimir un array en PHP
- Cómo eliminar un elemento de un array en PHP
- Cómo quitar elementos de array vacíos en PHP