W3docs

PHP Assoziative Arrays verstehen

PHP assoziative Arrays: erstellen, lesen, aktualisieren, mit foreach durchlaufen, sortieren und häufige Fehler vermeiden.

Ein assoziatives Array in PHP speichert Werte unter benannten Schlüsseln statt an numerischen Positionen. Während ein indiziertes Array die Frage „Was steht an Position 2?" beantwortet, beantwortet ein assoziatives Array die Frage „Was ist der Wert für email?" — genau so modelliert man in echtem Code Datensätze, Konfigurationen und Nachschlagetabellen.

Dieses Kapitel behandelt, wie man assoziative Arrays erstellt, liest und aktualisiert, sie durchläuft, nach Schlüssel oder Wert sortiert und die häufigsten Fehler vermeidet, über die Anfänger stolpern.

Was ist ein assoziatives Array?

Ein assoziatives Array ist ein Array, dessen Elemente über einen string-Schlüssel (auch Index genannt) statt über eine ganzzahlige Position angesprochen werden. Jeder Schlüssel muss eindeutig sein — weist man einem bereits vorhandenen Schlüssel einen Wert zu, wird der alte Wert überschrieben.

$user = [
    "name"  => "Alice",
    "email" => "[email protected]",
    "age"   => 30,
];

Intern kennt PHP nur einen einzigen Array-Typ. Ein „indiziertes" Array ist lediglich ein assoziatives Array, dessen Schlüssel zufällig die ganzen Zahlen 0, 1, 2, … sind. Daher kann man string- und ganzzahlige Schlüssel im selben Array beliebig mischen.

Ein assoziatives Array erstellen

Es gibt zwei gleichwertige Möglichkeiten, eines zu erstellen. Die kurze []-Syntax (PHP 5.4+) wird in modernem Code bevorzugt; die Funktion array() erzielt dasselbe Ergebnis.

// Short array syntax (recommended)
$fruits = ["apple" => "red", "banana" => "yellow", "grapes" => "green"];

// Long syntax — identical result
$fruits = array("apple" => "red", "banana" => "yellow", "grapes" => "green");

Man kann Schlüssel auch einzeln hinzufügen, was beim Aufbau eines Arrays in einer Schleife praktisch ist:

$prices = [];
$prices["coffee"] = 2.5;
$prices["tea"]    = 2.0;

Die Reihenfolge, in der Schlüssel zugewiesen werden, bleibt erhalten — PHP-Arrays merken sich die Einfügereihenfolge, sodass beim späteren Iterieren coffee vor tea erscheint.

Auf Werte zugreifen

Einen Wert liest man mit seinem Schlüssel in eckigen Klammern:

$fruits = ["apple" => "red", "banana" => "yellow"];
echo $fruits["apple"]; // red

Existiert der Schlüssel nicht, gibt PHP eine Warnung aus und gibt null zurück. Um sicher zu lesen, prüft man zunächst mit array_key_exists() oder verwendet den Null-Koaleszenz-Operator ??, um einen Standardwert bereitzustellen:

$color = $fruits["mango"] ?? "unknown";
echo $color; // unknown — no warning

Werte hinzufügen und ändern

Durch Zuweisung mit einem Schlüssel wird entweder ein bestehendes Element aktualisiert oder ein neues hinzugefügt:

$fruits = ["apple" => "red"];

$fruits["apple"]  = "green"; // modify existing key
$fruits["cherry"] = "dark red"; // add a new key

print_r($fruits);
// Array ( [apple] => green [cherry] => dark red )

Ein Element entfernt man mit unset():

unset($fruits["apple"]);

Ein assoziatives Array durchlaufen

Eine reguläre for-Schleife funktioniert hier nicht, da keine fortlaufenden numerischen Indizes vorhanden sind. Man verwendet foreach mit der Form key => value, um Schlüssel und Werte gemeinsam zu durchlaufen:

$user = ["name" => "Alice", "email" => "[email protected]", "age" => 30];

foreach ($user as $field => $value) {
    echo "$field: $value\n";
}
// name: Alice
// email: [email protected]
// age: 30

Assoziative Arrays sortieren

Da Schlüssel eine Bedeutung tragen, sortiert man mit Funktionen, die die Schlüssel-Wert-Zuordnung erhaltensort() würde die Schlüssel verwerfen. Man verwendet:

  • ksort() / krsort() — nach Schlüssel sortieren, aufsteigend / absteigend
  • asort() / arsort() — nach Wert sortieren, aufsteigend / absteigend
$scores = ["Bob" => 75, "Alice" => 90, "Carol" => 82];

arsort($scores); // sort by value, highest first

foreach ($scores as $name => $score) {
    echo "$name: $score\n";
}
// Alice: 90
// Carol: 82
// Bob: 75

Den vollständigen Satz an Sortierfunktionen findet man unter Arrays in PHP sortieren.

Häufige Fehler

  • Ein Schlüssel erneut zu verwenden, überschreibt stillschweigend. ["a" => 1, "a" => 2] ergibt ["a" => 2] — kein Fehler, der erste Wert geht verloren.
  • Numerische string-Schlüssel werden zu ganzen Zahlen. ["10" => "x"] wird unter dem ganzzahligen Schlüssel 10 gespeichert. $arr["10"] und $arr[10] erreichen dasselbe Element.
  • true/false/null-Schlüssel werden umgewandelt. Ein true-Schlüssel wird zu 1, false und null werden zu 0 bzw. "". Man sollte sich auf einfache strings und ganze Zahlen als Schlüssel beschränken.
  • Nicht auf for ($i = 0; …) verlassen. Man verwende foreach, array_keys() oder array_values() zum Iterieren, wenn die Schlüssel nicht 0..n sind.

Fazit

Assoziative Arrays ermöglichen es, Daten unter aussagekräftigen, eindeutigen string-Schlüsseln zu speichern — ideal für Datensätze, Einstellungen und Nachschlagetabellen. Man liest mit $arr["key"] (fehlende Schlüssel mit ?? absichern), aktualisiert oder fügt durch Zuweisung hinzu, entfernt mit unset(), iteriert mit foreach und sortiert mit den schlüssel-/werterhaltenden Funktionen wie ksort() und asort().

Um tiefer einzusteigen, empfiehlt sich ein Blick auf indizierte Arrays, mehrdimensionale Arrays (Arrays aus assoziativen Arrays) und array_keys() zum Extrahieren aller Schlüssel auf einmal.

Übungen

Übung
Was gilt für assoziative Arrays in PHP?
Was gilt für assoziative Arrays in PHP?
Was this page helpful?