Eine stabile Sortierung von PHP-Arrays kann erreicht werden, indem: ein benutzerdefinierter Komparator erstellt wird, der beim Vergleich den Originalindex berücksichtigt; Verwendung der Funktion uasort() zum Sortieren der Werte nach dem Schlüssel und Festlegen des Werts auf das Element, das den Originalindex enthält ; diese Methoden stellen sicher, dass gleiche Elemente in derselben Sortierreihenfolge wie in ihrer ursprünglichen Reihenfolge vorliegen.
PHP Array Stable Sorting: Beibehalten der Reihenfolge gleicher Elemente
Einführung
Stable Sorting stellt sicher, dass die Reihenfolge gleicher Elemente nach dem Sortieren mit der ursprünglichen Reihenfolge übereinstimmt. Für eine stabile Sortierung gelten die folgenden Vergleiche:
a == b => sort(a) <= sort(b)
PHP-Array-native Funktionen sort()
und rsort()
sind instabil. In diesem Artikel werden Methoden zur stabilen Sortierung untersucht. sort()
和 rsort()
函数是不稳定的。本篇文章将探究稳定排序的方法。
方法
1. 自定义比较器
使用自定义比较器,在相等元素时比较它们的原始索引:
function cmp($a, $b) { if ($a == $b) { return 0; } return $a < $b ? -1 : 1; }
然后在 usort()
或 uksort()
函数中使用它:
usort($arr, 'cmp');
2. 使用 uasort()
uasort()
根据键对值进行排序,ksort()
Methode
1. Benutzerdefinierter Komparator
Verwenden Sie einen benutzerdefinierten Komparator, um die ursprünglichen Indizes von Elementen zu vergleichen, wenn sie gleich sind:$indices = array_keys($arr); uasort($arr, function($a, $b) use ($indices) { if ($a == $b) { return 0; } return $indices[array_search($a, $arr)] < $indices[array_search($b, $arr)] ? -1 : 1; });
usort()
oder < Verwenden Sie ihn in der Funktion code>uksort(): $scores = [ 'John' => 90, 'Mary' => 85, 'Bob' => 85, 'Alice' => 95 ]; uasort($scores, function($a, $b) { if ($a == $b) { return 0; } return $a < $b ? -1 : 1; }); print_r($scores);
2. Verwenden Sie uasort()
uasort()
, um Werte basierend auf Schlüsseln zu sortieren , ksort()
sortiert die Schlüssel. Sie können also den Wert im Array auf ein Element setzen, das den ursprünglichen Index enthält, und dann die Schlüssel sortieren: 🎜Array ( [Alice] => 95 [John] => 90 [Bob] => 85 [Mary] => 85 )
Das obige ist der detaillierte Inhalt vonStabile PHP-Array-Sortierung: Beibehaltung der Reihenfolge gleicher Elemente. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!