4.3.7 Assoziative Arrays

Bei assoziativen Arrays wird jedem Element ein Schlüssel (=Key) zugewiesen.

Füllen von assoziativen Arrays

1
2
3
4
5
6
$flower = ["Tulpe" => "Gelb", "Rose" => "Rot", "Kornblume" => "Blau"];

// alternative Schreibweise
$flower["Tulpe"] = "Gelb";
$flower["Rose"] = "Rot";
$flower["Kornblume"] = "Blau";

Zum Vergleich hier die veraltete Schreibweise mittels der array-Funktion.

// veraltete Schreibweise: array()-Funktion
$flower = 
    array("Tulpe" => "Gelb", "Rose" => "Rot", "Kornblume" => "Blau");

Auslesen von assoziativen Arrays

Der Zugriff erfolgt mittels Schlüssel, wobei die Anführungszeichen richtig zu setzen sind!

1
2
3
echo "flower 3:" . $flower["Kornblume"] . "<br>";
echo "flower 1:" . $flower["Tulpe"] . "<br>";
echo "flower 2:" . $flower["Rose"];

Ausgabe:
flower 3: Blau
flower 1: Gelb
flower 2: Rot

Variablen zum Füllen und Auslesen verwenden

Oftmals wird ein Array nicht "von Hand" gefüllt, sondern die Werte gelangen über Variablen in das Array. Variablen können sowohl als Key als auch als Value verwendet werden.

1
2
3
4
// Variablen $type1...3 und $color1...3 zuvor definieren
$flower = ["$type1" => "$color1", "$type2" => "$color2", "$type3" => "$color3"];

echo "flower 3:" . $flower["$type3"] . "<br>";

Somit können Arrays auch gut mittels for-Schleifen gefüllt werden.

Aufgabe

Warum funktioniert folgende Zeile nicht?

echo "flower 2: $flower["Tulpe"]";

Wie könnte das Problem behoben werden?

Lösung

Der echo-Befehl beginnt mit einem doppelten Anführungszeichen und geht daher nur bis zum nächsten doppelten Anführungszeichen. Der korrekte Sourcecode lautet:

echo "flower 2:" . $flower["Tulpe"];
echo "flower 2:" , $flower["Tulpe"];