Assoziatives Array in PHP

In einer Variable wird normalerweise nur ein Wert gespeichert. Zum Speichern von mehreren Werten kann man in PHP Arrays verwenden. Diese speichern die Werte entweder mit einem Index oder mit einem Schlüsselwort bzw. Key. Beim Speichern mit einem Index kann man auf einen Wert zugreifen, indem man in eckigen Klammern den Index angibt.

// Array deklarieren und Werte zuweisen
$tag = array
(
'Mo', 
'Di', 
'Mi', 
'Do', 
'Fr'
);

// Zugriff über Index, Ausgabe wäre Do
echo $tag[3];

Solche Arrays werden auch indizierte Arrays genannt. Diese haben den Nachteil, dass bei sehr vielen Werten die Übersichtlichkeit verloren geht. Wenn man z.B. in einem Array mehrere Hundert Werte speichert, muss man ständig sich vergewissern, zu welchem Index ein Wert zugeordnet ist. Die Lösung für eine bessere Übersichtlichkeit können assoziative Arrays (auf Englisch associative arrays) sein. Hierbei werden die Werte nicht einem Index zugeordnet, sondern einem Schlüsselwort bzw. Key.

Über ein Gleichheitszeichen mit einer schließenden spitzen Klammer => erfolgt die Zuweisung, wobei der Key links und der Wert rechts davon geschrieben wird. Der Key kann in einfachen oder doppelten Hochkommas geschrieben werden.

// Array deklarieren, Keys Werte zuweisen
$tag = array
(
'mo' => 'Mo', 
'di' => 'Di', 
'mi' => 'Mi', 
'do' => 'Do', 
'fr' => 'Fr'
);

// Zugriff über Key, Ausgabe wäre Do
echo $tag['do'];

Die folgende Schreibweise wäre ebenfalls möglich. Die Definition des Arrays zu Beginn ist bei dieser Variante optional.

// Optionale Array Definition
$tag = array();

$tag['mo'] = 'Mo';
$tag['di'] = 'Di';
$tag['mi'] = 'Mi';
$tag['do'] = 'Do';
$tag['fr'] = 'Fr';

Ein Array kann mit dieser Schreibweise auch mit neuen Werten erweitert werden.

$tag['sa'] = 'Sa';
$tag['so'] = 'So';

Wenn man ein Key mehrfach verwendet, überschreibt der zuletzt zugewiesene Wert die vorherigen.

$arr['a'] = 'A';
$arr['b'] = 'B';
$arr['a'] = 'C';

// Ausgabe wäre C
echo $arr['a'];

Bei der Festlegung des Keys hat man viele Möglichkeiten. Es sind Umlaute, Sonderzeichen oder sogar Leerzeichen möglich. Man muss jedoch darauf achten, dass wenn man den Key innerhalb von einfachen Hochkommas setzt und ein Hochkomma im Key vorkommen soll, diesen mit \' zu escapen. Analog dazu verfährt man bei der Verwendung von doppelten Hochkommas.

$arr['!"§$%&/()=?\' äöüß'] = 'A';

echo $arr['!"§$%&/()=?\' äöüß'];

Der Übersichtlichkeit halber sollte man auf exotische Keys verzichten und "sprechende" Namen verwenden.

Kurzschreibweise ab PHP 5.4

Ab der PHP-Version 5.4 kann auch die Kurzschreibweise verwendet werden, um ein Array zu definieren und Werte zuzuweisen.

$tag = [
'mo' => 'Mo', 
'di' => 'Di', 
'mi' => 'Mi', 
'do' => 'Do', 
'fr' => 'Fr'
];

Bei all den gezeigten Arrays handelt es sich um eindimensionale Arrays. Assoziative Arrays können auch in Verbindung mit mehrdimensionalen Arrays verwendet werden. Dabei handelt es sich um Arrays, die wiederum Arrays enthalten. So erhält man verzweigte Datenstrukturen. Zum Auslesen der Werte in ein- oder mehrdimensionalen Arrays kann man Schleifen verwenden.