Trier un tableau multidimensionnel en PHP

Subodh Poudel 30 janvier 2023
  1. Utilisez l’opérateur de vaisseau spatial pour trier le tableau multidimensionnel en PHP
  2. Utilisez la fonction usort() avec une fonction de comparaison anonyme pour trier un tableau multidimensionnel en PHP
  3. Utilisez la fonction usort() avec une fonction de comparaison définie par l’utilisateur pour trier un tableau multidimensionnel en PHP
Trier un tableau multidimensionnel en PHP

Cet article présentera trois méthodes pour trier le tableau multidimensionnel par valeur en PHP.

Utilisez l’opérateur de vaisseau spatial pour trier le tableau multidimensionnel en PHP

Nous pouvons utiliser l’opérateur de vaisseau spatial <=> pour trier le tableau multidimensionnel avec des valeurs en PHP. Nous utilisons la fonction usort() avec l’opérateur de vaisseau spatial. L’opérateur a été introduit en PHP 7. Il est utilisé pour comparer les deux valeurs. Il en résulte une valeur entière 0 si les deux opérandes sont égaux, un résultat inférieur à 0 si l’opérande de gauche est inférieur à l’opérande de droite et un résultat supérieur à 0 si l’opérande de gauche est supérieur à celui de droite opérande. De même, la fonction usort() trie un tableau avec des valeurs en tenant compte de la fonction de comparaison définie par l’utilisateur. La syntaxe de la fonction est la suivante.

usort($array, $callback)

Ici, $array est le tableau à trier. L’option $callback est une fonction de rappel anonyme qui compare les premier et deuxième arguments du tableau.

Par exemple, considérons le tableau suivant à trier. Nous allons trier le tableau avec la valeur de la clé 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'),
);

Dans la balise d’ouverture PHP, écrivez la fonction usort() avec le tableau $info et une fonction anonyme comme deux arguments. La fonction anonyme a $x et $y comme paramètres. Dans le corps de la fonction, utilisez l’opérateur spaceship pour comparer les âges de deux arguments comme $x['age'] <=> $y['age'] et retournez la valeur. Ensuite, fermez la balise d’ouverture PHP. Ensuite, utilisez la fonction PHP print_r() pour imprimer le tableau $info à l’intérieur de la balise HTML <pre>.

Ainsi, le tableau est trié en fonction de la valeur age comme indiqué dans la section de sortie.

Exemple de code :

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

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

Production:

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
 )
)

Utilisez la fonction usort() avec une fonction de comparaison anonyme pour trier un tableau multidimensionnel en PHP

Nous pouvons utiliser la fonction usort() utilisée dans la première méthode pour trier le tableau multidimensionnel avec des valeurs ainsi qu’une fonction de rappel anonyme. Dans cette méthode, nous utilisons l’opérateur de soustraction au lieu de l’opérateur de vaisseau spatial <=>. Nous pouvons soustraire les valeurs du tableau selon lequel le tableau est trié. Ainsi, nous pouvons trier le tableau. Nous utiliserons le même tableau $info pour le trier par la valeur $age. Cette méthode peut être utilisée avant PHP 7 car l’opérateur de vaisseau spatial n’a été introduit qu’en PHP 7.

Par exemple, écrivez la fonction usort() avec les paramètres ci-dessus. Dans le corps de la fonction anonyme, retournez la soustraction des deux arguments sous la forme $x['age'] - $y['age']. Imprimez le tableau avec print_r() comme ci-dessus. Nous recevrons le même résultat que dans la première méthode.

Exemple de code :

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

Utilisez la fonction usort() avec une fonction de comparaison définie par l’utilisateur pour trier un tableau multidimensionnel en PHP

Cette méthode est assez similaire à la deuxième méthode. La seule différence est que nous utiliserons une fonction de comparaison définie par l’utilisateur au lieu de la fonction anonyme. Cette méthode peut être utilisée avant la version PHP 5.3. C’est parce que le concept de fonction anonyme a été introduit dans PHP 5.3.

Par exemple, créez une fonction définie par l’utilisateur sortByAge() avec $x et $y comme paramètres. A l’intérieur du corps de fonction, écrit la soustraction des âges comme ci-dessus. En dehors de la fonction, écrivez la fonction usort() avec le tableau $info et sortByAge comme arguments. Enfin, imprimez le tableau.

L’exemple ci-dessous affiche la même sortie que dans la première méthode.

Exemple de code :

<?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

Article connexe - PHP Array