Anleitung zum Sortieren mehrdimensionaler Arrays: Integrierte Funktion: array_multisort(): Nach mehreren Spalten sortieren. usort(): Sortieren mit benutzerdefinierter Vergleichsfunktion. Benutzerdefinierte Funktion: Rekursive Funktion: Verschachtelte Elemente rekursiv sortieren. Natürliche Sortierung: Verwenden Sie natsort(), um Zeichenfolgenelemente auf natürliche Weise zu sortieren. Praktischer Fall: Sortieren Sie mehrdimensionale Arrays nach Durchschnittsnote, Name und höchster Note.
PHP Multidimensional Array Sorting: Umfassender Leitfaden und Best Practices
Einführung
Sortieren ist eine häufige Aufgabe, die bei der Arbeit mit mehrdimensionalen Arrays in PHP häufig auftritt. Dieser Artikel bietet eine umfassende Anleitung zu verschiedenen mehrdimensionalen Array-Sortiertechniken mit praktischen Beispielen.
Eingebaute Funktionen
1. array_multisort()
Mit der Funktion array_multisort()
können Sie ein mehrdimensionales Array basierend auf mehreren Spalten sortieren. Die Syntax lautet wie folgt: 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
das mehrdimensionale Array ist, das sortiert werden muss. SORT_ASC
und SORT_DESC
geben die Sortierreihenfolge (aufsteigend/absteigend) an. usort()
Die Funktion sortiert das Array mithilfe einer benutzerdefinierten Vergleichsfunktion. Bei mehrdimensionalen Arrays muss die benutzerdefinierte Vergleichsfunktion die Elemente der beiden Arrays vergleichen. Die Syntax lautet wie folgt: $students = [ [ 'name' => 'Alice', 'scores' => [85, 90, 95] ], [ 'name' => 'Bob', 'scores' => [92, 88, 91] ], [ 'name' => 'Charlie', 'scores' => [80, 85, 90] ] ];
1. Wenn Sie die Elemente rekursiv sortieren müssen Für verschachtelte Elemente im Array können rekursive Funktionen verwendet werden. Hier ist ein Beispiel:
// 自定义比较函数 function cmpAverageScore($a, $b) { return (array_sum($a['scores']) / count($a['scores'])) < (array_sum($b['scores']) / count($b['scores'])); } // 排序 usort($students, 'cmpAverageScore');
2. Natürliche Sortierung
Die Funktion natsort()
in PHP kann Zeichenfolgen auf natürliche Weise sortieren (unter Berücksichtigung von Zahlen). Für Zeichenfolgenelemente in einem mehrdimensionalen Array können Sie den folgenden Code verwenden: // 排序姓名
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');
Das obige ist der detaillierte Inhalt vonPHP Multidimensional Array Sorting: Umfassender Leitfaden und Best Practices. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!