Heim  >  Artikel  >  Backend-Entwicklung  >  Stabile PHP-Array-Sortierung: Beibehaltung der Reihenfolge gleicher Elemente

Stabile PHP-Array-Sortierung: Beibehaltung der Reihenfolge gleicher Elemente

WBOY
WBOYOriginal
2024-04-26 15:15:01457Durchsuche

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 数组稳定排序:保持相等元素的顺序

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;
});
Dann in usort() oder 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
)
🎜🎜 Praktisches Beispiel 🎜🎜🎜 Sortieren Sie ein Array von Schülernoten nach Punktzahl und behalten Sie dabei die ursprüngliche Reihenfolge der Schüler mit derselben Punktzahl bei :🎜rrreee🎜Ausgabe:🎜rrreee🎜🎜Fazit🎜🎜🎜Mit den oben aufgeführten Methoden kann eine stabile Sortierung von PHP-Arrays erreicht werden, sodass die Reihenfolge gleicher Elemente erhalten bleibt. 🎜

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn