Dans le développement de PHP, le tri pour les tableaux multidimensionnels est une exigence commune. La maîtrise des méthodes de tri raisonnables peut efficacement améliorer l'efficacité du traitement des données et la lisibilité du code.
Supposons qu'il existe un tableau contenant les noms et les notes de l'étudiant. Nous voulons les trier par ordre croissant par son nom, puis dans l'ordre descendant par les notes.
$students = [
['name' => 'Alice', 'score' => 90],
['name' => 'Bob', 'score' => 85],
['name' => 'Charlie', 'score' => 95],
['name' => 'Dave', 'score' => 80],
];
En définissant une fonction de comparaison, les règles de tri peuvent être contrôlées avec précision. Les fonctions suivantes comparent d'abord les noms, et le même nom comparera les résultats:
function compare_students($a, $b) {
if ($a['name'] == $b['name']) {
return $b['score'] <=> $a['score']; // Diminution des résultats
}
return strcmp($a['name'], $b['name']); // Nom ascendant
}
Appelez la fonction USORT () pour terminer le tri:
usort($students, 'compare_students');
PHP 7.4 introduit une écriture simplifiée de fonctions anonymes pour rendre le code plus concis:
uasort($students, function($a, $b) {
if ($a['name'] == $b['name']) {
return $b['score'] <=> $a['score'];
}
return strcmp($a['name'], $b['name']);
});
La fonction de comparaison prend deux éléments du tableau comme paramètres et renvoie un entier pour représenter leur relation de commande. Ici, utilisez d'abord strcmp () pour trier dans l'ordre croissant des noms; Si les noms sont les mêmes, utilisez l'opérateur de comparaison <=> pour trier dans l'ordre descendant des notes.
Une fois le tri terminé, le résultat de sortie est le suivant:
print_r($students);
Le tableau est disposé par ordre alphabétique dans le nom, et les scores sont disposés de haut à bas lorsque le même nom est utilisé.
La maîtrise des idées et des méthodes de base du tri des tableaux multidimensionnelles PHP peut aider les développeurs à gérer de manière flexible des problèmes de tri de données complexes. En combinant les fonctions de comparaison personnalisées et les fonctions de tri intégrées PHP, le code est à la fois concis et efficace.