ksort()
Erfahren Sie, wie die PHP-Funktion ksort() ein Array aufsteigend nach Schlüsseln sortiert, mit Syntax, Parametern und Beispielen.
PHP-Funktion: Array ksort()
Die PHP-Funktion ksort() sortiert ein Array nach seinen Schlüsseln in aufsteigender Reihenfolge und behält dabei die Zuordnung jedes Schlüssels zu seinem ursprünglichen Wert bei. Sie ist das schlüsselbasierte Gegenstück zu asort(), das nach Werten sortiert, und das Gegenteil von krsort(), das Schlüssel in absteigender Reihenfolge sortiert.
Diese Seite erklärt, wann ksort() eingesetzt werden sollte, seine Syntax, Parameter und Rückgabewert, die verfügbaren Sortier-Flags sowie mehrere Anwendungsbeispiele (einschließlich des häufigen Fehlers beim Sortieren numerischer String-Schlüssel).
Wann ksort() verwenden?
Verwenden Sie ksort(), wenn die Schlüssel eine Bedeutung tragen und das Array nach ihnen geordnet werden soll — zum Beispiel:
- Sortierung eines assoziativen Arrays mit
name => wert-Paaren alphabetisch nach Name. - Bringen von Konfigurationseinträgen oder HTTP-Headern in eine vorhersehbare, deterministische Reihenfolge.
- Sortierung von Daten, die nach Jahr, ID oder Kategorie verschlüsselt sind, vor dem Iterieren oder Rendern.
Da ksort() die Schlüssel/Wert-Zuordnung beibehält, ist es das richtige Werkzeug, wenn eine Neuindizierung des Arrays (wie es das einfache sort() tun würde) Informationen verlieren würde. Eine Übersicht aller PHP-Sortierfunktionen finden Sie unter Arrays sortieren.
Syntax
ksort($array, $sorting_type);Parameter
Die Funktion ksort() akzeptiert zwei Parameter:
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
$array | Ja | Das zu sortierende Array. Es wird per Referenz übergeben und direkt verändert. |
$sorting_type | Nein | Ein Flag, das steuert, wie Schlüssel verglichen werden (siehe Tabelle unten). Standard ist SORT_REGULAR. |
Das Flag $sorting_type akzeptiert folgende Konstanten:
| Flag | Verhalten |
|---|---|
SORT_REGULAR | Elemente normal vergleichen (Standard). Numerische Strings werden als Zahlen verglichen. |
SORT_NUMERIC | Elemente numerisch vergleichen. |
SORT_STRING | Elemente als Strings vergleichen. |
SORT_NATURAL | Elemente als Strings mit „natürlicher Sortierung" vergleichen (wie natsort()). |
SORT_LOCALE_STRING | Elemente als Strings basierend auf dem aktuellen Gebietsschema vergleichen. |
Hinweis: ksort() verändert das ursprüngliche Array direkt — es gibt kein neues sortiertes Array zurück. Die ursprüngliche Schlüsselreihenfolge geht nach dem Aufruf verloren.
Rückgabewert
Die Funktion ksort() gibt einen boolean zurück: true bei Erfolg und false bei Misserfolg.
Beispiel 1: Sortierung eines assoziativen Arrays nach Schlüssel
Hier sind die Schlüssel Personennamen, daher ordnet ksort() das Array alphabetisch nach Namen (Ben, Joe, Peter) und behält dabei die korrekte Zuordnung jedes Namens zum entsprechenden Alter bei:
Ausgabe:
Array
(
[Ben] => 37
[Joe] => 43
[Peter] => 35
)Beispiel 2: Sortierung eines assoziativen Arrays nach Schlüssel in umgekehrter Reihenfolge
Für absteigende Schlüsselreihenfolge verwenden Sie stattdessen krsort() — es funktioniert genau wie ksort(), kehrt aber das Ergebnis um:
Ausgabe:
Array
(
[Peter] => 35
[Joe] => 43
[Ben] => 37
)Beispiel 3: Sortierung eines indizierten Arrays nach Schlüssel
Ein indiziertes Array hat bereits die Schlüssel 0, 1, 2, 3 in Reihenfolge, daher lässt die Sortierung nach Schlüssel die Elemente unverändert. Dies zeigt, dass ksort() Schlüssel sortiert, nicht Werte — um die Werte selbst zu sortieren, verwenden Sie sort():
Ausgabe:
Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
)Beispiel 4: Sortierung eines indizierten Arrays nach Schlüssel in umgekehrter Reihenfolge
Das Umkehren der Schlüsselreihenfolge eines indizierten Arrays mit krsort() behält jeden Wert bei seinem ursprünglichen numerischen Schlüssel, sodass die Elemente in umgekehrter Einfügereihenfolge erscheinen:
Ausgabe:
Array
(
[3] => yellow
[2] => blue
[1] => green
[0] => red
)Fallstrick: numerische String-Schlüssel und das Sortier-Flag
Eine häufige Überraschung ist das Sortieren eines Arrays, dessen Schlüssel numerische Strings sind. Standardmäßig (SORT_REGULAR) vergleicht PHP sie als Zahlen, sodass "10" nach "2" kommt. Mit SORT_STRING werden sie Zeichen für Zeichen verglichen, wodurch "10" vor "2" steht:
<?php
$data = ["10" => "a", "1" => "b", "2" => "c"];
ksort($data); // SORT_REGULAR (numeric)
print_r($data);
ksort($data, SORT_STRING); // string comparison
print_r($data);Ausgabe:
Array
(
[1] => b
[2] => c
[10] => a
)
Array
(
[1] => b
[10] => a
[2] => c
)Wählen Sie das Flag $sorting_type, das zur gewünschten Interpretation der Schlüssel passt.
Fazit
Die Funktion ksort() sortiert ein PHP-Array aufsteigend nach seinen Schlüsseln, direkt im Array, während jedes Schlüssel/Wert-Paar erhalten bleibt. Greifen Sie darauf zurück, wenn die Schlüssel bedeutungstragend sind und die Reihenfolge wichtig ist; verwenden Sie krsort() für absteigende Reihenfolge, asort() / arsort() zum Sortieren nach Werten unter Beibehaltung der Schlüssel, oder sort(), wenn Sie die Schlüssel vollständig verwerfen möchten. Wählen Sie das richtige $sorting_type-Flag — insbesondere wenn Ihre Schlüssel numerische Strings sind —, um den erwarteten Vergleich zu erhalten.
graph TD
A[PHP array] -->|ksort| B[Sorted PHP array]