Einführung Arrays
Arrays erzeugen
Bis jetzt wurde in einer Variablen nur genau ein Wert gespeichert, z.B. ein Zahl oder ein Text. Um mehrere Werte in einer Variablen zu speichern werden Arrays verwendet. Die Werte in einem Array werden durch einen Key (Index) eindeutig identifiziert.
$feld1 = array ('key1' => 'value1', 'key2' => 'value2' );
für eine bessere Übersicht wird auch folgende Syntax verwendet:
$feld1 = array(
'key1' => 'value1',
'key2' => 'value2',
);
Beispiel
$person = array(
'augenfarbe' => 'braun',
'haarfarbe' => 'grün'
);
Werden die Keys nicht mit explizit angegeben, werden numerische Keys von 0 aufsteigend für jeden Wert erzeugt.
$feld2 = array ('value_a', 'value_b' );
Hier hat value1
hat den Key 0
und value2
den Key 1
.
Beispiel
$donut = array('schokostreusel', 'zuckerguss pink', 'zuckerguss weiß', 'sprinkles bunt');
Auch die Definition eines leeren Array ist möglich:
$feld3 = array();
Merke: ein bekanntes Array is
$_POST
, hier sind aller Formulardaten mit ihrenname
Attributen als Key gespeichert
Auf Werte zugreifen
Auf die Werte wird zugegriffen, indem an das Array der Key in eckigen Klammern angefügt wird:
print $feld1['key1']; #ergibt value1
print $feld2[0]; #ergibt value_a
Werte hinzufügen
Auf ähnliche Weise können auch Werte in einem Array gesetzt werden:
$feld1['key3'] = 'value3';
Hier wird im array feld1
ein Werte value3
mit dem Key key3
hinzugefügt.
Achtung: ein ist im Array schon ein Wert mit dem Key
key3
vorhanden, wird er so überschrieben.
Soll in einem Array mit nummerischen Keys ein Wert hinzugefügt werden, kann auf die Angabe eines Keys verzichtet werden, die eckigen Klammern bleiben dann leer, der Key wird automatisch gesetzt
$feld2[] = 'value3';
Wert (und Key) löschen
Ein Element in einem Array wird folgendermaßen gelöscht:
unset($feld1['key1']);
Hier wird der Wert mit dem Key key1
und der Key selbst gelöscht, d.h. das Array hat nun einen Eintrag weniger.
foreach
Um alle Werte in einem Array programmatisch zu verarbeiten, kann die Schleife foreach
verwendet werden. Wie der Name vermuten lässt, werden dabei alle Einträge eines Arrays nacheinander abgearbeitet. (Bei einer for
-Schleife müsste die Anzahl der Einträge bekannt sein.) foreach
Die folgende Syntax gibt alle Werte aus dem Array $field1
aus:
foreach ($feld1 as $value) {
print $value;
}
foreach
erhält dabei als Argument das Array und die Angabe, wie jeder Wert des Arrays innerhalb der foreach
-Schleife heißen soll, in diesem Fall $value
. Falls der Key auch verwendet werden soll, lautet die Angabe folgendermaßen:
foreach ($feld1 as $key => $f) {
print $key . ', ' . $value . ',<br />';#Hier wurde der String etwas erweitert.
}
Mehrstufige Arrays
Arrays können auch Arrays enthalten. Anstatt einem String oder einer Zahl kann ein Wert auch wieder ein Array sein.
$feld = array(
'item1' => array(
'key1' => 'value1',
'key2' => 'value2',
),
'item2' => array(
'key1' => 'value3',
'key2' => 'value4',
),
);
Beispiel
$donut = array(
0 => 'schokostreusel',
'sprinkles' => array('bunt', 'blau'),
'zuckerguss' => array('weiß', 'blau', 'pink'),
);
Beim ansprechen der Werte (ausgeben, einfügen und löschen), müssen alle übergeordneten Keys in absteigender Reihenfolge bis zum gewünschten Wert in eckigegen Klammern angegeben werden.
print $feld['item1'][ 'key1']; #ergibt value1
print $feld['item2'][ 'key2']; #ergibt value4
$feld['item2'][ 'key1'] = 'value5'; #überschreibt value3 mit value5
Beispiel
print $feld[0] #ergibt schokostreusel
print $feld['sprinkles'][1] #ergibt blau
Um alle Werte des merhstufigen Arrays auszugeben wird die foreach - Schleife verwendet:
foreach ($feld as $element) { # In $element ist jeweils das untergeornete Array gespeichert
print $element['key1'] . "<br />";
print $element['key2'] . "<br />";
}
fearch kann auch zweimal verwendet werden, die Keys werden dann nciht benötigt:
foreach ($feld as $element) { # itteriert durch das erste Array der obersten Ebene
foreach ($element as $value) { # Iterriert durch die Arrays der nächsten Ebene
print $value;
}
}