Les tableaux unidimensionnels sont triés à l'aide de la fonction sort(), les tableaux bidimensionnels sont triés par éléments internes à l'aide de la fonction usort() et les tableaux de grande dimension sont triés par éléments hiérarchiques à l'aide de la fonction usort() imbriquée multicouche. .La clé est de résoudre le problème de décomposition couche par couche.
En PHP, un tableau est une structure de données puissante qui peut stocker différents types de données, y compris des tableaux multidimensionnels. Les tableaux multidimensionnels sont des tableaux qui contiennent d'autres tableaux, ce qui nous permet de créer des structures de données complexes.
Le tri de tableaux multidimensionnels peut être une tâche difficile, mais comprendre les concepts qui la sous-tendent est crucial. Dans cet article, nous allons faire un voyage dans les dimensions et apprendre à trier des tableaux multidimensionnels d'une, deux dimensions et plus à l'aide des fonctions intégrées de PHP.
Le tri de tableaux unidimensionnels est la forme la plus simple. En utilisant la fonction sort()
, nous pouvons trier les éléments du tableau par ordre croissant : sort()
函数,我们可以按升序对数组中元素进行排序:
<?php $arr = [5, 2, 8, 3, 1]; sort($arr); print_r($arr); // 输出:[1, 2, 3, 5, 8] ?>
二维数组的排序稍微复杂一些。我们可以根据其内部数组中的元素进行排序。例如,假设我们有一个二维数组,其中包含学生成绩:
<?php $students = [ ['name' => 'Alice', 'score' => 90], ['name' => 'Bob', 'score' => 80], ['name' => 'Carol', 'score' => 70] ]; ?>
要根据分数对学生进行降序排序,我们可以使用 usort()
函数:
<?php usort($students, function($a, $b) { return $b['score'] <=> $a['score']; }); print_r($students); // 输出:[ // ['name' => 'Alice', 'score' => 90], // ['name' => 'Bob', 'score' => 80], // ['name' => 'Carol', 'score' => 70] // ] ?>
对于更高维度的数组,排序的概念是相同的。例如,让我们考虑一个三维数组,其中包含三个学生班级的信息:
<?php $classes = [ [ ['name' => 'Alice', 'grade' => 'A'], ['name' => 'Bob', 'grade' => 'B'], ['name' => 'Carol', 'grade' => 'C'] ], [ ['name' => 'Dave', 'grade' => 'A'], ['name' => 'Eve', 'grade' => 'B'], ['name' => 'Frank', 'grade' => 'C'] ], [ ['name' => 'George', 'grade' => 'A'], ['name' => 'Helen', 'grade' => 'B'], ['name' => 'Ian', 'grade' => 'C'] ] ]; ?>
要根据学生的成绩按降序对所有三个班级进行排序,我们可以使用多层 usort()
函数嵌套:
<?php usort($classes, function($a, $b) { usort($a, function($c, $d) { return $d['grade'] <=> $c['grade']; }); usort($b, function($c, $d) { return $d['grade'] <=> $c['grade']; }); return $b[0]['grade'] <=> $a[0]['grade']; }); print_r($classes); // 输出:[ // [ // ['name' => 'Alice', 'grade' => 'A'], // ['name' => 'Bob', 'grade' => 'B'], // ['name' => 'Carol', 'grade' => 'C'] // ], // [ // ['name' => 'Dave', 'grade' => 'A'], // ['name' => 'Eve', 'grade' => 'B'], // ['name' => 'Frank', 'grade' => 'C'] // ], // [ // ['name' => 'George', 'grade' => 'A'], // ['name' => 'Helen', 'grade' => 'B'], // ['name' => 'Ian', 'grade' => 'C'] // ] // ] ?>
理解多维数组排序的关键是分解问题,并使用嵌套的 usort()
rrreee
usort()
: 🎜rrreee🎜High Dimensional Array Sort🎜 🎜Pour les tableaux de dimensions supérieures, le concept de tri est le même. Par exemple, considérons un tableau tridimensionnel contenant des informations sur les classes de trois élèves : 🎜rrreee🎜 Pour trier les trois classes par ordre décroissant en fonction des notes des élèves, nous pouvons utiliser usort() Imbrication de fonctions : 🎜rrreee🎜La clé pour comprendre le tri des tableaux multidimensionnels est de décomposer le problème et d'utiliser des fonctions <code>usort()
imbriquées pour le résoudre couche par couche. De cette façon, nous pouvons facilement trier des structures de données complexes avec des dimensions arbitraires. 🎜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!