Arrays dienen der strukturierten Speicherung von logisch zusammengehörigen Werten. In PHP sind Arrays grundsätzlich als Schlüssel-Wertepaare organisiert. Welche Schlüssel dabei verwendet werden, hängt dabei von der Art der Initialisierung des Arrays ab. Der direkte – lesende, wie auch schreibende – Zugriff auf ein PHP-Array erfolgt unter Angabe eines Elementenschlüssels über den Vektoroperator.
Der wohl am häufigsten verwendete Zugriff erfolgt über einen Elementenindex – als Index wird eine ganze Zahl angegeben, wobei diese normalerweise positiv sind; allerdings können auch negative Indexe angegeben werden, die dann aber als String-Key gewertet werden. Dies liegt sicher daran, dass diese Form des Zugriffs auch in anderen Programmiersprachen – zumindest mit positiven Indexen – auf die selbe Art funktioniert. Mit dem Vektoroperator, der in nahezu allen Programmiersprachen mit dem eckigen Klammerpaar ([]) genutzt wird, funktioniert der Zugriff, indem ein Indexwert angegeben wird. Der Indexwert besagt, auf welchen der sequenziell unter ihrem Index im Array gespeicherten Speicherplätze sich eine Operation bezieht. Das erste in einem Array gespeicherte Element wird unter PHP an der Indexposition 0 abgelegt. Auch dieses Verhalten teilt PHP mit anderen Programmiersprachen, wie etwa Java oder C++. Voraussetzung ist hier allerdings, dass das Array entsprechend initialisiert wurde. Beachten Sie bitte auch unsere Beispiele zu Arrays in JavaScript.
Im ersten Beispiel zu PHP-Arrays wird zunächst ein Array initialisiert. Dies geschieht, indem das Array, welches hier unter dem Variablennamen v gespeichert wird, über das Sprachkonstrukt array mit den angegebenen Werten gefüllt wird. Das Beispiel initialisiert das Array mit automatischer Schlüsselvergabe. Dies bedeutet, dass das erste Element (im Beispiel der Wert 1), welches in array angegeben wird, unter der Indexposition 0 abgelegt wird. Der darauf folgende Wert wird unter der Indexposition 1 gespeichert, der dritte Wert unter Indexposition 2 und so weiter.
Durch den Befehl array wird das hierdurch initialisierte Array zurückgeliefert und dann unter der Variable v gespeichert. Belegt sind nach diesem Befehl also die Array-Elemente v[0] bis v[6]. Auf diese Elemente kann nun also mittels der Indexwerte (0-6) zugegriffen werden. Als nächstes wird die Anzahl der im Array gespeicherten Elemente ermittelt und ausgegeben.
Dazu wird zuerst die Anzahl der in v gespeicherten Elemente ermittelt. Dies erledigt der Aufruf der Funktion count, welcher diese Anzahl liefert. Das Ergebnis dieses Aufrufs wird mit den links und rechts davon stehenden Strings zusammengefasst – über den Concatenation-Operator zum aneinanderhängen von Strings – und dann mit Hilfe der Funktion echo ausgegeben.
Der darauf folgende PHP-Code gibt den Inhalt des zuvor definierten Arrays aus. Die Foreach-Schleife entnimmt dem Array jeden einzelnen Wert in der Reihenfolge, in der die Werte im Array abgelegt sind. Jeder einzelne Wert wird zum Gebrauch innerhalb der Schleife in der Variable val zwischengespeichert und dann mit echo – jeweils gefolgt von einem Leerzeichen – ausgegeben.
In der letzten Ausgabe des Beispiels wird eine der zahlreichen Array-Funktionen genutzt. Die Funktion array_sum dient dazu, die Summe aller im Array gespeicherten Werte zu berechnen. Als Parameter erwartet die Funktion eine Variable, die das entsprechende Array vorgibt.
<?php // Variable v als Array definieren, die mit einer Werteliste // vorbelegt wird. $v = array (1, 2, 5, 7, 11, 13, 17); // Anzahl der im Array enthaltenen Elemente (array length) ermitteln. // Hier kann auch die Funktion sizeof verwendet werden. echo 'Array Length: ' . count ($v) . '<br>'; echo 'Element im Array: '; // Iteration durch das Array mit der Foreach-Schleife foreach ($v as $val) // Ausgabe des aktuellen Wertes echo $val . ' '; echo '<br>'; // Summe über die im Array gespeicherten Werte echo 'Summe: ' . array_sum ($v) . '<br>'; ?>
Array Length: 7
Element im Array: 1 2 5 7 11 13 17
Summe: 56
Das nächste Beispiel initialisiert ein leeres Array und weist dann den Indexpositionen 1, 3 und 5 verschiedene Werte zu. Danach wird die Anzahl der Elemente im Array ermittelt und dann mit einem entsprechenden String ausgegeben. In Folge wird mit der For-Schleife der Inhalt des Arrays ausgegeben.
Allerdings muss hier einiges an Aufwand getrieben werden. Das liegt daran, dass die Elemente nicht unter den Indexen 0 bis 2 gespeichert wurden. Die For-Schleife ist hier in einer Form notiert, wie sie häufig verwendet wird. Der Schleifenzähler (Zählervariable) läuft von 0 bis 2 (wegen < 3, wobei dieser Wert durch die Funktion count ermittelt wird). Da die Elemente im Array nicht unter diesen Indexen gespeichert wurden steht zu erwarten, dass die Aufrufe zu den Indexpositionen 0 und 2 zu Fehlern führen.
Um diesen Fehlern vorzubeugen bedient sich das Script der isset Function. Mit dieser Funktion wird im Schleifenkörper jedes Element des Arrays vor dem Zugriff auf dessen Existenz geprüft. Befindet sich ein Element an der Position im Index, so wird dieses Element ausgegeben. Ist dem nicht so (siehe Else-Teil des If-Statements), erfolgt die Ausgabe einer Fehlermeldung, die angibt, an welcher Indexposition der Zugriff fehl geschlagen ist.
Im darauf folgenden Abschnitt wird ein anderer Schleifentyp zur Ausgabe des Arrays verwendet. Hier handelt es sich um eine While-Schleife, die sich der each-Funktion bedient, welche der Reihe nach alle Schlüssel-Wertepaare aus dem Array abruft. Da die Funktion each mit einem internen Zeiger arbeitet, der die aktuelle Position im Array speichert, muss der Zeiger des Arrays zunächst mit der Funktion reset auf das erste Element im Array gesetzt werden. Dies ist immer dann nötig, wenn Funktionen zur relativen Iteration durch ein Array verwendet werden – das Array wird quasi als Liste behandelt. Hierzu zählen neben each die Array-Funktionen next, prev und end. Jedes durch each in Form eines Arrays ermittelte Schlüssel-Wertepaar wird mit list in einem Schritt den temporären Variablen key und value zugewiesen. Danach wird der Inhalt der Variablen mit echo ausgegeben.
In einer dritten – und zugleich einfacher zu verwendenden – Schleife wird der Inhalt des Arrays nochmals ausgegeben. Hier kommt die Foreach-Schleife zum Einsatz, die den internen Array-Zeiger automatisch beim ersten Zugriff auf das erste Element setzt. Hierdurch lassen sich Fehler vermeiden, die auftreten können, wenn der Aufruf von reset vergessen wird. Auch hier werden die Schlüssel (key) und die darunter gespeicherten Werte (value) dem Array belage entnommen. Die hierbei entnommenen Werte werden auch hier im Dokument ausgegeben.
<?php // Variable mit einem leeren Array initialisieren $belage = array (); // Werte auf direkten Indexen zuweisen $belage[1] = 'Thunfisch'; $belage[3] = 'Salami'; $belage[5] = 'Pilze'; // Ausgabe der Array-Length echo 'Anzahl der Elemente: ' . count ($belage) . '<br>'; // Zugriff über den Array-Index for ($i = 0; $i < count ($belage); $i++) // Existiert an der Indexposition ein Element? if (isset ($belage[$i])) // Dan soll dieses ausgegeben werden echo 'belage[' . $i . ']: ' . $belage[$i] . '<br>'; else // Ansonsten wird eine Fehlermeldung angezeigt echo 'Fehler: Indexposition ' . $i . ' existiert nicht!<br>'; echo '<br>'; // Zugriff über die Schlüssel-Wertepaare des Arrays reset ($belage); while (list ($key, $value) = each ($belage)) echo "Key: $key; Value: $value<br>\n"; echo '<br>'; // Foreach-Schleife zur Ausgabe des Array-Inhalts foreach ($belage as $key => $value) echo "Key: $key; Value: $value<br>\n"; ?>
Anzahl der Elemente: 3
Fehler: Indexposition 0 existiert nicht!
belage[1]: Thunfisch
Fehler: Indexposition 2 existiert nicht!
Key: 1; Value: Thunfisch
Key: 3; Value: Salami
Key: 5; Value: Pilze
Key: 1; Value: Thunfisch
Key: 3; Value: Salami
Key: 5; Value: Pilze
¬ Menu
¬ Gratis Download
¬ Tutorials
¬ Seminare
¬ Yoga
¬ Insolvenzrecht
¬ News
15.08.2008Schleifen in PHP: Die While-Schleife » mehr 13.08.2008Nutzung von Variablen unter PHP: Definition, Sichtbarkeit und vordefinierte Variablen » mehr 11.08.2008Ausgabe von Datum und Zeit mit PHP nach Konvertierung in ein String » mehr Eine vollständige News-Liste ist auf der News-Seite zugänglich.
¬ Foren
¬ Buchtipp
Dynamische Webseiten mit PHP 5.1 / MySQL 5 für Schnelleinsteiger
Weitere PHP Bücher finden Sie unter PHP Literatur