5. PHP Arrays

Im zuvor erschienen Artikel haben wir uns mit Variablen und if-Abfragen auseinander gesetzt. Das Wissen über diese Thematik benötigst Du auch, um mit Arrays in PHP zu arbeiten können.

Mit diesem Typ wollen wir uns auf dieser Seite näher beschäftigen.

Was sind Arrays?

Zu Beginn will ich Dir erst einmal den Begriff erklären, beziehungsweise das, was dahinter steckt.

Während Du mit einer einfachen Variable exakt einen Wert, etwa eine Zeichenkette (string) oder eine Zahl (integer/float), speichern kannst, sind Arrays dafür gedacht, mehrere Daten des gleichen Typs in einer Variablen zu speichern. PHP lässt sogar verschiedene Daten-Typen zu.

In PHP besitzt jedes Arrays sogenannte Schlüssel und Werte. Außerdem kann ein Array als Wert ein weiteres Array enthalten und dieses wiederum kann auch mehrere Arrays enthalten.

Wenn Du keine Zuteilung vornimmst, werden die Schlüssel, beginnend mit 0, durchnummeriert. Mit dem entsprechenden Schlüssel kannst Du dann den Wert abfragen. Das macht es besonders einfach ein Array zum Beispiel mit einer for-Schleife auszulesen (dazu später mehr).

Doch eventuell möchtest Du auch selbst entscheiden, wie die Schlüssel, die übrigens einmalig sein müssen, aussehen sollen. Dann spricht man von einem sogenannten assoziativen Array. Auch diese Möglichkeit besteht in PHP. Wie genau geht das denn jetzt in PHP?

Array in PHP setzen und verwenden

Bevor du ein Array verwenden kannst, muss es initialisiert werden. Du musst PHP also mitteilen, dass eine Variable ein Array enthalten soll. Wenn Du Schlüssel und Werte später hinzufügen möchtest, kannst Du so beginnen:

$arrayA = array();

Die Variable $arrayA enthält nun ein Array und kann dementsprechend angesprochen werden. Wenn Du schon beim Setzen Werte zuteilen möchtest, kannst Du das so machen:

$baeume = array('Fichte', 'Eiche', 'Tanne');

Das Array $baeume enthält nun ein Array mit drei Werten, die, weil Du keine anderen Schlüssel zugewiesen hast, über die Schlüssel 0, 1 und 2 abgefragt werden können.

Umso interessanter ist es jetzt die Werte auch abzufragen – das ist in PHP ganz einfach. Du benötigst dafür die eckigen Klammern, den Schlüssel und die Variable, die das Array enthält:

echo $baeume[1]; // Gibt 'Eiche' aus

Mit echo gibst Du in diesem Fall den Inhalt der Variable aus. Zugleich teilst Du mit,  dass der Wert mit dem Schlüssel 1 aus dem Array $baeume abgefragt werden soll. Was aber wenn Du einen neuen Wert setzen möchtest?

Es gibt zwei Möglichkeiten, um nachträglich Werte zu speichern. Du kannst entweder einen Schlüssel angeben. Ist dieser bereits vorhanden, so wird der alte Inhalt durch den neuen, von Dir übergebenen ersetzt, sollte das nicht der Fall sein werden Schlüssel und Inhalt einfach so zum Array hinzugefügt.

$arrayA['tier'] = 'Zebra';

Durch diesen Code wurde im $arrayA der Schlüssel ‚tier‘ angelegt und diesem der Wert ‚Zebra‘ zugeteilt.

Die 2. Möglichkeit besteht darin, keinen Schlüssel anzugeben. PHP teilt dem Wert dann den nächsten, freien nummerischen Schlüssel zu, in diesem Fall also die 3:

$baeume[] = 'Buche';

echo $baeume[3]; // Gibt 'Buche' aus

Je nach Anwendungszweck kann es auch sinnvoll sein mit der Initialisierung des Arrays eigene Schlüssel anzugeben, das funktioniert dann wie folgt.

$arrayA = array('titel' => 'WWW Coding', 'thema' => 'Arrays in PHP', 'schluesselwoerter' => array('php', 'array', 'schluessel', 'werte'));

Dieser Beispiel-Code weist $arrayA nicht nur ein Array mit den Schlüsseln titel, thema und schluesselworter zu, sondern der Schlüssel schluesselwoerter beinhaltet auch ein weiteres Array.

Wie ich es bereits oben erklärt habe, können Arrays beliebig verschachtelt werden. Auch in dem Array, welches der Schlüssel schluesselwoerter enhält, könnten wir Schlüssel setzen. Und auch ein solches, untergeordnetes Array kann recht einfach, und wie ich finde logisch, abgefragt werden:

echo $arrayA['schluesselwoerter'][1]; // Gibt 'array' aus

Damit fordern wir PHP dazu auf, den Inhalt des Arrays schluesselwoerter mit dem Index 1 aus dem Array $arrayA abzufragen und auszugeben. Gar nicht so schwer mit Arrays zu arbeiten, oder?

Funktionen für die PHP-Arrays

Wenn Du das erst einmal verstanden hast, kannst Du dir auch weitere Funktionen in PHP angucken, die speziell für die Verarbeitung von Arrays entwickelt wurden.

Auch bei „normalen“ Funktionen wird Dir auffallen, dass häufig Arrays zurückgegeben werden. Das ist nun einmal die Möglichkeit in PHP, um in einer Variable nahezu beliebig viele Werte zu speichern.

Eine Übersicht aller PHP-Funktionen, die Arrays verarbeiten, findet du auf dieser Seite. Um die Möglichkeiten an zuschneiden, die Dir damit geboten werden, werde ich hier auf ein Beispiel eingehen.

Du weißt jetzt wie Du den Inhalt eines Array-Wertes abfragst, wenn Dir der Schlüssel bekannt ist, aber was tun, wenn Dir der Wert bekannt ist, der Schlüssel aber nicht? Diesen brauchst Du schließlich, um etwa den Wert im Array zu überschreiben.

Dafür kannst du array_search() in PHP nutzen. Es benötigt als ersten Parameter den Wert, und als zweiten das Array, das durchsucht werden soll. Damit wird allerdings nur die oberste Ebene des Arrays durchsucht, eventuell untergeordnete Arrays, die das Array enthält, werden ignoriert.

$gesuchterSchluessel = array_search('Buche', $baeume);

Dieser Code durchsucht das Array $baeume nach dem Wert ‚Buche‘ und speichert, wenn er denn gefunden werden konnte, den Schlüssel für den Wert in $gesuchterSchluessel. In unserem Beispiel wäre dies der Schlüssel 3.

In diesem Fall könntest Du dir sicher sein, dass der Schlüssel existiert. Wenn Du den Wert für einen Schlüssel abfragst und nicht mit Gewissheit sagen kannst, ob dieser Schlüssel existiert, solltest Du isset() verwenden.

if (isset($baeume[4])) {
echo $baeume[4];
} else {
echo 'Schlüssel existiert nicht!';
}

Alle Werte eines Arrays auslesen

Wenn Du alle Werte eines Arrays auslesen möchtest, kannst Du dafür sogenannte Schleifen verwenden. Diese werden in einem späteren Teil des PHP Tutorials ausführlich erklärt.

Bis dahin weise ich Dich schon mal auf die extra auf Arrays ausgerichtete foreach-Schleife in PHP hin, und auf die Möglichkeit (eher für das Debugging als zum tatsächlichen Einsatz), print_r() zu verwenden.

Im nächsten Artikel, der im Rahmen dieser Serie, in Kürze erscheint, beschäftigen wir uns mit der Ausgabe in PHP.