Dans cet exemple, chaque élément du tableau data
représente une ligne de la table. Ce type de données est typique d'un
enregistrement de base de données.
volume | edition
-------+--------
67 | 2
86 | 1
85 | 6
98 | 2
86 | 6
67 | 7
Les données sont sous forme de tableau, appelé data.
Cela est généralement le résultat, par exemple, de la fonction
mysqli_fetch_assoc().
Dans cet exemple, nous allons trier la colonne
volume par ordre décroissant, et
la colonne edition par 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.
<?php
// Les données sont créées en parcourant mysqli_fetch_assoc :
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
// Obtient une liste de colonnes
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
// Vous pouvez utiliser array_column() au lieu du code ci-dessus
$volume = array_column($data, 'volume');
$edition = array_column($data, 'edition');
// Trie les données par volume décroissant, edition croissant
// Ajoute $data en tant que dernier paramètre, pour trier par la clé commune
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
// Parcours des données et affiche les valeurs triées pour chaque colonne
echo 'volume | edition', PHP_EOL;
echo '-------+--------', PHP_EOL;
for ($i = 0; $i < count($data); $i++) {
printf("%6d | %7d\n", $volume[$i], $edition[$i]);
}
?>
Le jeu d'enregistrement est maintenant trié et ressemble à cela :
volume | edition
-------+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7