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.
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 |
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 |
$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 |
$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 |