W3docs

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:

ParameterErforderlichBeschreibung
$arrayJaDas zu sortierende Array. Es wird per Referenz übergeben und direkt verändert.
$sorting_typeNeinEin Flag, das steuert, wie Schlüssel verglichen werden (siehe Tabelle unten). Standard ist SORT_REGULAR.

Das Flag $sorting_type akzeptiert folgende Konstanten:

FlagVerhalten
SORT_REGULARElemente normal vergleichen (Standard). Numerische Strings werden als Zahlen verglichen.
SORT_NUMERICElemente numerisch vergleichen.
SORT_STRINGElemente als Strings vergleichen.
SORT_NATURALElemente als Strings mit „natürlicher Sortierung" vergleichen (wie natsort()).
SORT_LOCALE_STRINGElemente 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:

php— editable, runs on the server

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:

php— editable, runs on the server

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():

php— editable, runs on the server

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:

php— editable, runs on the server

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]

Übungen

Übung
Was ist der Zweck der Funktion ksort() in PHP?
Was ist der Zweck der Funktion ksort() in PHP?
Was this page helpful?