Heim > Artikel > Backend-Entwicklung > Die schwarze Magie der mehrdimensionalen Sortierung von PHP-Arrays: Enthüllung der Prinzipien dahinter
PHP mehrdimensionale Array-Sortierung schwarze Magie: Verwenden Sie die benutzerdefinierte Funktion „compare_students“, um nach Name und Noten zu sortieren. Die Sortierung erfolgt über die Funktion usort(). UAC in PHP 7.4 bietet eine sauberere Möglichkeit, anonyme Klassen zu implementieren. Die benutzerdefinierte Funktion vergleicht Eingabearrays und sortiert nach Namen in aufsteigender Reihenfolge und nach Grad in absteigender Reihenfolge.
Die schwarze Magie der mehrdimensionalen Sortierung von PHP-Arrays: Enthüllung des Prinzips
In PHP ist die mehrdimensionale Sortierung von Arrays eine scheinbar komplexe Aufgabe. Wenn Sie jedoch die richtigen Techniken beherrschen und die dahinter stehenden Prinzipien verstehen, können Sie diese dunkle Magie mit Leichtigkeit meistern.
Praktischer Fall
Angenommen, wir haben ein Array mit Schülerdaten und möchten das Array nach Nachnamen und Klasse sortieren.
$students = [ ['name' => 'Alice', 'score' => 90], ['name' => 'Bob', 'score' => 85], ['name' => 'Charlie', 'score' => 95], ['name' => 'Dave', 'score' => 80], ];
Sortierung basierend auf benutzerdefinierter Funktion
Wir können die benutzerdefinierte Funktion compare_students
verwenden, um zwei Schülerdatensätze zu vergleichen und nach Nachname und Note zu sortieren: 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);Dann verwenden Sie
usort () Die Funktion
sortiert das Array: 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 ) )🎜Basierend auf UAC🎜🎜🎜PHP 7.4 führte benutzerdefinierte anonyme Klassen (UAC) ein, die uns eine weitere prägnantere Implementierung bietet: 🎜rrreee 🎜🎜Prinzip enthüllt🎜🎜🎜The Die benutzerdefinierte Funktion
compare_students
ist eine Rückruffunktion, die auf den Werten der beiden Eingabearrays $a
und $b
vergleicht ihre Bestellung. 🎜🎜Die Funktion prüft zunächst, ob zwei Schüler den gleichen Namen haben. Wenn ja, werden ihre Noten verglichen, um sie in absteigender Reihenfolge zu sortieren. 🎜🎜Wenn nicht, werden die Namen der Schüler mithilfe der Funktion strcmp()
verglichen, um sie in aufsteigender Reihenfolge zu sortieren. 🎜🎜🎜Praktische Anwendung🎜🎜🎜Wenn wir nun das Array $students
ausgeben, erhalten wir die Ergebnisse sortiert nach Nachname und Note: 🎜rrreee🎜Ausgabeergebnisse: 🎜rrreeeDas obige ist der detaillierte Inhalt vonDie schwarze Magie der mehrdimensionalen Sortierung von PHP-Arrays: Enthüllung der Prinzipien dahinter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!