Ordenar matriz multidimensional en PHP

Subodh Poudel 30 enero 2023
  1. Utilice el operador de nave espacial para ordenar el array multidimensional en PHP
  2. Utilice la función usort() con una función de comparación anónima para ordenar un array multidimensional en PHP
  3. Utilice la función usort() con una función de comparación definida por el usuario para ordenar el array multidimensional en PHP
Ordenar matriz multidimensional en PHP

Este artículo presentará tres métodos para ordenar el array multidimensional por valor en PHP.

Utilice el operador de nave espacial para ordenar el array multidimensional en PHP

Podemos usar el operador de nave espacial <=> para ordenar el array multidimensional con valores en PHP. Usamos la función usort() junto con el operador de la nave espacial. El operador se introdujo en PHP 7. Se utiliza para comparar los dos valores. Da como resultado un valor entero 0 si ambos operandos son iguales, da como resultado menos de 0 si el operando de la izquierda es menor que el operando de la derecha, y resulta mayor que 0 si el operando de la izquierda es mayor que el de la derecha operando. Asimismo, la función usort() ordena un array con valores considerando la función de comparación definida por el usuario. La sintaxis de la función es la siguiente.

usort($array, $callback)

Aquí, $ matriz es el array que se va a ordenar. La opción $callback es una función de callback anónima que compara el primer y segundo argumento del array.

Por ejemplo, considere ordenar la siguiente matriz. Ordenaremos el array con el valor de la clave age.

$info = array(
    array('name' => 'Jadon', 'age' => 21, 'country' => 'England'),
    array('name' => 'Marcus', 'age' => 23, 'country' => 'England'),
    array('name' => 'Anthony', 'age' => 24, 'country' => 'France'),
    array('name' => 'Mason', 'age' => 19, 'country' => 'England'),
    array('name' => 'Dan', 'age' => 23, 'country' => 'Wales'),
);

Dentro de la etiqueta de apertura de PHP, escriba la función usort() con el array $info y una función anónima como dos argumentos. La función anónima tiene $x y $y como parámetros. Dentro del cuerpo de la función, use el operador de nave espacial para comparar las edades de dos argumentos como $x['age'] <=> $y['age'] y devuelva el valor. A continuación, cierre la etiqueta de apertura de PHP. Luego, use la función PHP print_r() para imprimir el array $info dentro de la etiqueta HTML <pre>.

Por lo tanto, el array se ordena según el valor age como se muestra en la sección de salida.

Código de ejemplo:

<?php
usort($info, function($x, $y) {
    return $x['age'] <=> $y['age'];
});
?>

<pre><?php print_r($info);?> </pre>

Producción :

Array
(
 [0] => Array
 (
 [name] => Mason
 [age] => 19
 [country] => England
 )

 [1] => Array
 (
 [name] => Jadon
 [age] => 21
 [country] => England
 )

 [2] => Array
 (
 [name] => Marcus
 [age] => 23
 [country] => England
 )

 [3] => Array
 (
 [name] => Dan
 [age] => 23
 [country] => Wales
 )

 [4] => Array
 (
 [name] => Anthony
 [age] => 24
 [country] => France
 )
)

Utilice la función usort() con una función de comparación anónima para ordenar un array multidimensional en PHP

Podemos usar la función usort() utilizada en el primer método para ordenar el array multidimensional con valores junto con una función de devolución de llamada anónima. En este método, usamos el operador de resta en lugar del operador de nave espacial <=>. Podemos restar los valores del array según la cual se ordena el array. Por lo tanto, podemos ordenar el array. Usaremos el mismo array $info para ordenarlo por el valor $age. Este método se puede utilizar antes de PHP 7 ya que el operador de nave espacial solo se introdujo en PHP 7.

Por ejemplo, escriba la función usort() con los parámetros anteriores. En el cuerpo de la función anónima, devuelve la resta de los dos argumentos como $x['age'] - $y['age']. Imprima el array con print_r() como se hizo anteriormente. Recibiremos el mismo resultado que en el primer método.

Código de ejemplo:

<?php
usort($info, function($x, $y) {
    return $x['age'] - $y['age'];
});
?>
<pre><?php print_r($info);?> </pre>

Utilice la función usort() con una función de comparación definida por el usuario para ordenar el array multidimensional en PHP

Este método es bastante similar al segundo método. La única diferencia es que usaremos una función de comparación definida por el usuario en lugar de la función anónima. Este método se puede utilizar antes de la versión PHP 5.3. Es porque el concepto de función anónima se introdujo en PHP 5.3.

Por ejemplo, cree una función definida por el usuario sortByAge() con $x y $y como parámetros. Dentro del cuerpo de la función, escribe la resta de las edades como arriba. Fuera de la función, escriba la función usort() con el array $info y sortByAge como argumentos. Por último, imprima el array.

El siguiente ejemplo muestra la misma salida que en el primer método.

Código de ejemplo:

<?php
function sortByAge($x, $y) {
    return $x['age'] - $y['age'];
}
usort($info, 'sortByAge');
?>
<pre><?php print_r($info);?> </pre>
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Artículo relacionado - PHP Array