Comment trier un tableau multidimensionnel en PHP?

Introduction

Cette page explique comment trier un tableau multidimensionnel en PHP. Ce type d'opération arrive fréquemment lorsque le tableau provient du résultat d'une requête sur la base de données.

Le tableau d'exemple

Considérons le tableau multidimensionnel suivant :

$array[] = array('name' => 'Dupont', 'age' => 72);
$array[] = array('name' => 'Albert', 'age' => 11);
$array[] = array('name' => 'Durand', 'age' => 56);
$array[] = array('name' => 'Michel', 'age' => 52);
$array[] = array('name' => 'Dupont', 'age' => 36);
$array[] = array('name' => 'Plutot', 'age' => 27);
Name Age
Dupont 72
Albert 11
Durand 56
Michel 52
Dupont 36
Plutot 27

Tri par la colonne Name dans l'ordre croissant

Nous avons un tableau de lignes, mais array_multisort() nécessite un tableau de colonnes, donc nous utilisons le code suivant pour obtenir les colonnes et ainsi effectuer le tri.

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

Voici le résultat :

Name Age
Albert 11
Dupont 36
Dupont 72
Durand 56
Michel 52
Plutot 27

Tri par la colonne Age dans l'ordre décroissant

$columns = array_column($array, 'age');
array_multisort($columns, SORT_DESC, $array);

Voici le résultat :

Name Age
Dupont 72
Durand 56
Michel 52
Dupont 36
Plutot 27
Albert 11

Tri par Name dans l'ordre croissant, puis par Age dans l'ordre décroissant

$columns_1 = array_column($array, 'name');
$columns_2 = array_column($array, 'age');
array_multisort($columns_1, SORT_ASC, $columns_2, SORT_DESC, $array);

Voici le résultat :

Name Age
Albert 11
Dupont 72
Dupont 36
Durand 56
Michel 52
Plutot 27

Voir aussi


Dernière mise à jour : 23/11/2021