Maison > Article > développement back-end > La magie noire du tri multidimensionnel des tableaux PHP : révéler les principes qui la sous-tendent
Magie noire de tri de tableau multidimensionnel PHP : utilisez la fonction personnalisée compare_students pour trier en fonction du nom et des notes. Le tri est effectué via la fonction usort(). L'UAC dans PHP 7.4 fournit un moyen plus propre d'implémenter des classes anonymes. La fonction personnalisée compare les tableaux d'entrée et trie par nom par ordre croissant et par note par ordre décroissant.
La magie noire du tri multidimensionnel des tableaux PHP : révéler le principe
En PHP, le tri multidimensionnel des tableaux est une tâche apparemment complexe. Cependant, maîtriser les techniques appropriées et comprendre les principes qui les sous-tendent peut vous permettre de maîtriser facilement cette magie noire.
Cas pratique
Supposons que nous ayons un tableau contenant des données sur les élèves et que nous souhaitions trier le tableau par nom de famille et par note.
$students = [ ['name' => 'Alice', 'score' => 90], ['name' => 'Bob', 'score' => 85], ['name' => 'Charlie', 'score' => 95], ['name' => 'Dave', 'score' => 80], ];
Tri basé sur une fonction personnalisée
Nous pouvons utiliser la fonction personnalisée compare_students
pour comparer deux dossiers d'élèves afin de trier par nom de famille et note : compare_students
来比较两个学生记录,实现按姓氏和成绩排序:
function compare_students($a, $b) { if ($a['name'] == $b['name']) { return $a['score'] <=> $b['score']; } return strcmp($a['name'], $b['name']); }
然后使用 usort()
函数对数组进行排序:
usort($students, 'compare_students');
基于 UAC
PHP 7.4 引入了用户定义的匿名类 (UAC),这为我们提供了另一种更简洁的实现方式:
uasort($students, function($a, $b) { if ($a['name'] == $b['name']) { return $a['score'] <=> $b['score']; } return strcmp($a['name'], $b['name']); });
原理揭秘
自定义函数 compare_students
是一个回调函数,它根据两个输入数组 $a
和 $b
的值比较它们的顺序。
该函数首先检查两个学生是否具有相同的姓名。如果是,它将比较他们的成绩,以便按成绩递减排序。
如果不是,它将使用 strcmp()
函数比较学生的姓名,以便按升序排序。
实战应用
现在,当输出 $students
print_r($students);Ensuite, utilisez
usort ()
trie le tableau : Array ( [0] => Array ( [name] => Alice [score] => 90 ) [1] => Array ( [name] => Bob [score] => 85 ) [2] => Array ( [name] => Charlie [score] => 95 ) [3] => Array ( [name] => Dave [score] => 80 ) )🎜Basé sur UAC🎜🎜🎜PHP 7.4 a introduit les classes anonymes définies par l'utilisateur (UAC), qui nous fournissent une autre implémentation plus concise : 🎜rrreee 🎜🎜Principe révélé🎜🎜🎜Le la fonction personnalisée
compare_students
est une fonction de rappel basée sur les valeurs des deux tableaux d'entrée $a
et $b
Comparez leur commande. 🎜🎜La fonction vérifie d'abord si deux étudiants portent le même nom. Si tel est le cas, il comparera leurs notes afin de les trier par ordre décroissant. 🎜🎜Sinon, il utilisera la fonction strcmp()
pour comparer les noms des élèves afin de les trier par ordre croissant. 🎜🎜🎜Application pratique🎜🎜🎜Maintenant, lors de la sortie du tableau $students
, nous obtiendrons les résultats triés par nom de famille et note : 🎜rrreee🎜Résultats de sortie : 🎜rrreeeCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!