Menu

PHP assoziative Arrays: Schlüssel/Wert-Paare

Ein assoziatives Array in PHP speichert Werte unter Schlüsseln, die du benennst: $user = ['name' => 'Ada', 'age' => 36]; liest du als $user['name']. Hier: Paare hinzufügen, ändern und entfernen, über Schlüssel und Werte iterieren, alle Schlüssel oder Werte holen, einen Schlüssel prüfen und nach Schlüssel oder Wert sortieren.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

Ein assoziatives Array speichert jeden Wert unter einem Schlüssel, den du wählst, geschrieben als key => value: $user = ['name' => 'Ada', 'age' => 36];. Einen Wert liest du mit $user['name'], und du fügst einen hinzu oder änderst ihn, indem du seinem Schlüssel etwas zuweist: $user['email'] = 'ada@example.com';.

In anderen Sprachen heißt dieselbe Struktur Dictionary, Map oder Hash. In PHP ist es ein ganz normales Array, dessen Schlüssel Strings statt 0, 1, 2 sind.

Paare hinzufügen, ändern und entfernen

Eine Zuweisung an einen Schlüssel, der nicht existiert, fügt ihn am Ende hinzu. Eine Zuweisung an einen existierenden Schlüssel ersetzt seinen Wert und behält seine Position. unset() entfernt ein Paar.

array_push() hilft hier nicht: Es kann nur Werte mit numerischen Schlüsseln anhängen. Um mehrere Paare auf einmal hinzuzufügen, verwendest du array_merge($stock, $more), wo die neuen Werte gewinnen, oder $stock + $more, wo bestehende Schlüssel ihre Werte behalten; die Seite zu array_merge vergleicht beides.

Über Schlüssel und Werte iterieren

foreach ($array as $key => $value) läuft in der Reihenfolge des Hinzufügens über die Paare. Lass $key => weg, wenn du nur die Werte brauchst.

Alle Schlüssel oder alle Werte holen

array_keys() liefert die Schlüssel als einfache Liste und array_values() die Werte, beide neu ab 0 indiziert. Gib array_keys() ein zweites Argument, dann liefert es nur die Schlüssel mit diesem Wert, und so findest du jeden Schlüssel zu einem Wert.

Für einen einzelnen Schlüssel liefert array_search() den ersten Treffer oder false, wenn es keinen gibt. Die Seite zu array_search erklärt, warum du dieses Ergebnis mit !== false vergleichen musst.

Prüfen, ob ein Schlüssel existiert

isset($arr['key']) ist die übliche und schnellste Prüfung, liefert aber false, wenn der Schlüssel existiert und null enthält. array_key_exists('key', $arr) liefert in diesem Fall true. Zum Lesen mit Ersatzwert erledigt der Operator ?? beides auf einmal.

Nach Schlüssel oder Wert sortieren

ksort() sortiert nach Schlüssel und asort() nach Wert, beide lassen jeden Schlüssel an seinem Wert. krsort() und arsort() sortieren absteigend. Verwende kein sort() auf ein assoziatives Array: Es wirft die Schlüssel weg und nummeriert ab 0 neu.

Alle diese Funktionen sortieren direkt im Array und liefern true, also bekommst du mit $sorted = ksort($arr) den Wert true und kein Array. Eigene Reihenfolgen verwenden uasort() und uksort().

Umdrehen, zählen und in JSON umwandeln

Bei Schlüssel/Wert-Daten tauchen ein paar Einzeiler immer wieder auf: array_flip() vertauscht Schlüssel und Werte, array_count_values() zählt, wie oft jeder Wert vorkommt, und json_encode() macht aus dem Array ein JSON-Objekt.

Typischer Fehler: einen Schlüssel lesen, der nicht da ist

Einen fehlenden Schlüssel zu lesen liefert null, aber dein eigenes PHP gibt außerdem eine Warnung aus:

<?php
$user = ['name' => 'Ada'];
echo $user['phone'];
Warning: Undefined array key "phone" in /var/www/html/index.php on line 3

Gib dem Lesen mit ?? einen Standardwert, was nie warnt, oder prüfe vorher mit isset(), wenn der fehlende Fall einen eigenen Zweig braucht.

In einem String in doppelten Anführungszeichen setzt du den Zugriff in geschweifte Klammern, "{$user['email']}". Ohne sie akzeptiert PHP nur die Form ohne Anführungszeichen, "$user[email]", bei der man sich leicht vertut.

Häufig gestellte Fragen

Wie erstelle ich in PHP ein assoziatives Array?

Schreib jedes Paar als key => value in eckige Klammern: $prices = ['apple' => 1.2, 'pear' => 0.9];. Einen Wert liest du mit $prices['apple'].

Wie sortiere ich in PHP ein assoziatives Array nach Schlüssel?

Rufe ksort($arr); für A bis Z oder krsort($arr); für Z bis A auf. Beide sortieren direkt im Array, behalten jeden Wert bei seinem Schlüssel und liefern true zurück, nicht das sortierte Array.

Wie durchlaufe ich in PHP ein assoziatives Array?

Mit foreach und beiden Variablen: foreach ($prices as $fruit => $price) { echo "$fruit: $price\n"; }. Die Paare kommen in der Reihenfolge, in der sie hinzugefügt wurden.

Wie bekomme ich alle Schlüssel eines assoziativen Arrays?

array_keys($arr) liefert die Schlüssel als indiziertes Array, und array_values($arr) liefert die Werte. array_keys($arr, $value) liefert nur die Schlüssel, deren Wert gleich $value ist.

Behält ein assoziatives Array in PHP die Einfügereihenfolge?

Ja. PHP-Arrays sind geordnete Maps, also sehen foreach, print_r und json_encode die Paare in der Reihenfolge, in der du sie eingefügt hast, bis du das Array mit ksort(), asort() oder einer ähnlichen Funktion sortierst.

Illustration der Programmiersprachen bei Coddy

Lerne mit Coddy zu programmieren

LOS GEHT'S