Heim > Backend-Entwicklung > PHP-Tutorial > Wie behalte ich die Schlüsselreihenfolge beim Sortieren assoziativer Arrays in PHP bei?

Wie behalte ich die Schlüsselreihenfolge beim Sortieren assoziativer Arrays in PHP bei?

Barbara Streisand
Freigeben: 2024-11-02 19:31:02
Original
1000 Leute haben es durchsucht

How to Preserve Key Order When Sorting Associative Arrays in PHP?

Schlüsselreihenfolge beim Sortieren assoziativer Arrays in PHP beibehalten

Assoziative Arrays in PHP speichern Schlüssel-Wert-Paare. Beim Sortieren solcher Arrays mithilfe der in PHP integrierten Sortierfunktionen ist es wichtig zu überlegen, ob die ursprüngliche Schlüsselreihenfolge beibehalten werden soll oder nicht. In diesem Artikel untersuchen wir das aktuelle Verhalten der Sortierung in PHP und stellen eine benutzerdefinierte Lösung zur Beibehaltung der Schlüsselreihenfolge bereit.

Sortierfunktionen und Stabilität von PHP

In PHP-Versionen vor 4.1.0 Die Sortierfunktionen wie asort() und uasort() sorgten für eine stabile Sortierung. Das bedeutet, dass die Reihenfolge dieser Schlüssel im sortierten Ergebnis erhalten bleibt, wenn mehrere Schlüssel denselben Wert haben. Ab PHP 4.1.0 ist die Stabilität jedoch nicht mehr garantiert.

Benutzerdefinierte stabile Sortierfunktion

Da die integrierten Sortierfunktionen von PHP keine stabile Sortierung unterstützen, müssen wir unsere eigene implementieren . Der Merge-Sort-Algorithmus wird aufgrund seiner garantierten O(n*log(n))-Zeitkomplexität häufig für diesen Zweck verwendet:

<code class="php">function mergesort(&$array, $cmp_function = 'strcmp') {
    ...
    // Logic for splitting, merging, and sorting the array
    ...
}</code>
Nach dem Login kopieren

Diese benutzerdefinierte Funktion kann mit uasort() verwendet werden, um das assoziative Array zu sortieren unter Beibehaltung der ursprünglichen Schlüsselreihenfolge:

<code class="php">uasort($arr, function($a, $b) {
    return mergesort([$a, $b]);
});</code>
Nach dem Login kopieren

Beispiel Verwendung

<code class="php">$arr = [
    'key-1' => 10,
    'key-2' => 20,
    'key-3' => 10,
    'key-4' => 30,
];

uasort($arr, function($a, $b) {
    return mergesort([$a, $b]);
});

print_r($arr);</code>
Nach dem Login kopieren

Ausgabe:

Array
(
    [key-1] => 10
    [key-3] => 10
    [key-2] => 20
    [key-4] => 30
)
Nach dem Login kopieren

Durch die Verwendung der benutzerdefinierten stabilen Sortierfunktion bleibt die Schlüsselreihenfolge des ursprünglichen Arrays in der sortierten Ausgabe erhalten.

Das obige ist der detaillierte Inhalt vonWie behalte ich die Schlüsselreihenfolge beim Sortieren assoziativer Arrays in PHP bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage