Guide de tri des tableaux multidimensionnels : Fonction intégrée : array_multisort() : Trier sur plusieurs colonnes. usort() : trier à l'aide de la fonction de comparaison définie par l'utilisateur. Fonction personnalisée : Fonction récursive : Trier les éléments imbriqués de manière récursive. Tri naturel : utilisez natsort() pour trier naturellement les éléments de chaîne. Cas pratique : Triez les tableaux multidimensionnels par note moyenne, nom et note la plus élevée.
Tri de tableaux multidimensionnels PHP : guide complet et meilleures pratiques
Introduction
Le tri est une tâche courante qui est souvent rencontrée lorsque l'on travaille avec des tableaux multidimensionnels en PHP. Cet article fournira un guide complet couvrant diverses techniques de tri de tableaux multidimensionnels, avec des exemples pratiques.
Fonctions intégrées
1. array_multisort()
En utilisant la fonction array_multisort()
, vous pouvez trier un tableau multidimensionnel basé sur plusieurs colonnes. La syntaxe est la suivante : array_multisort()
函数,您可以根据多个列对多维数组排序。语法如下:
array_multisort($arr, SORT_ASC, SORT_DESC, ...);
其中:
$arr
是需要排序的多维数组。SORT_ASC
和 SORT_DESC
指定排序顺序(升序/降序)。2. usort()
usort()
函数使用用户定义的比较函数对数组排序。对于多维数组,自定义比较函数需要比较两个数组的元素,语法如下:
usort($arr, function($a, $b) { return strcmp($a['name'], $b['name']); });
自定义函数
1. 递归函数
如果需要对数组中的嵌套元素进行递归排序,可以使用递归函数。以下是示例:
function sortMultiArrayRecursively($arr) { foreach ($arr as &$item) { if (is_array($item)) { sortMultiArrayRecursively($item); } } asort($arr); }
2. 自然排序
PHP 中的 natsort()
function sortMultiArrayNaturally($arr) { foreach ($arr as &$item) { if (is_array($item)) { sortMultiArrayNaturally($item); } else { $item = strval($item); } } natsort($arr); }
$arr
est le tableau multidimensionnel qui doit être trié. SORT_ASC
et SORT_DESC
spécifient l'ordre de tri (ascendant/décroissant). usort()
La fonction trie le tableau à l'aide d'une fonction de comparaison définie par l'utilisateur. Pour les tableaux multidimensionnels, la fonction de comparaison personnalisée doit comparer les éléments des deux tableaux. La syntaxe est la suivante : $students = [ [ 'name' => 'Alice', 'scores' => [85, 90, 95] ], [ 'name' => 'Bob', 'scores' => [92, 88, 91] ], [ 'name' => 'Charlie', 'scores' => [80, 85, 90] ] ];
1. éléments imbriqués dans le tableau, des fonctions récursives peuvent être utilisées. Voici un exemple :
// 自定义比较函数 function cmpAverageScore($a, $b) { return (array_sum($a['scores']) / count($a['scores'])) < (array_sum($b['scores']) / count($b['scores'])); } // 排序 usort($students, 'cmpAverageScore');
2. Tri naturel
La fonction natsort()
en PHP permet de trier les chaînes naturellement (en tenant compte des nombres). Pour les éléments de chaîne dans un tableau multidimensionnel, vous pouvez utiliser le code suivant : // 排序姓名
usort($students, function($a, $b) { return strcmp($a['name'], $b['name']); });
// 按平均成绩降序排序
array_multisort($students, SORT_DESC, SORT_REGULAR);
function cmpMaxScore($a, $b) { return max($a['scores']) < max($b['scores']); } usort($students, 'cmpMaxScore');
Ce 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!