Das Iterieren mit Hilfe der For-Each-Schleife wurde unter den Kontrollstrukturen behandelt. Da diese Schleife jedoch optimal für das Iterieren über assoziative Arrays geeignet ist, wird sie an dieser Stelle noch einmal vorgestellt:
1 2 3 4 5 6 |
<?php $fruechte = ['Frühjahr' => 'Erdbeeren', 'Sommer' => 'Pflaumen', 'Herbst' => 'Äpfel', 'Winter' => 'Mandarinen']; foreach ($fruechte as $jahreszeit => $frucht) { echo ("Im $jahreszeit reifen $frucht. "); } ?> |
oder vereinfacht ohne Schlüssel:
1 2 3 4 5 |
<?php foreach ($fruechte as $frucht) { echo ("Es gibt $frucht. "); } ?> |
Alternativ kann ein indexiertes Array ohne Lücken auch einfach über den Index mit Hilfe einer normalen For-Schleife durchlaufen werden. Es sei darauf hingewiesen, dass auch indexierte Arrays immer assoziative Arrays darstellen. Diese verfügen über fortlaufende numerische Schlüssel. Somit darf folgende Methode als Alternative zu dem oben genannten Vorgehen gesehen werden:
1 2 3 4 5 6 |
<?php $zahlen = ['null','eins','zwei','drei','vier','fünf']; for ($i=0;$i<count($zahlen); $i++){ echo ('Position '.$i.' ist mit '.$zahlen[$i].' belegt. '); } ?> |
Mit der Funktion array_walk()
lässt sich PHP anweisen, für jedes Element eines Arrays eine Funktion aufzurufen. Die Funktion bekommt von array_walk()
Parameter übergeben. Der erste Parameter ist der Wert des Array-Eintrags. Der zweite optionale Parameter ist der Schlüsselwert des Arrays. Zusätzlich kann ein Nutzerdaten-Parameter übergeben werden. Dieser wird der Funktion array_walk()
als letzter optionaler Parameter übergeben und dann der aufgerufenen Funktion mit übergeben. Als zweiter Parameter der Funktion array_walk()
kann entweder der Name der aufzurufenden Funktion als String angegeben werden oder an dieser Stelle wird die Funktion wird als eine anonyme Funktion definiert. Folgendes Beispiel zeigt die unterschiedlichen Alternativen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php $zahlen = ['null','eins','zwei','drei','vier','fünf']; // Aufruf über Namen der Funktion in String function zahlenverarbeitung($value) { echo ("$value "); } function zahlenverarbeitungMitKey($value,$key) { echo ("$key => $value "); } function zahlenverarbeitungMitKeyUndUserData ($value,$key,$userdata) { echo ("$key => $value mit $userdata "); } array_walk($zahlen,'zahlenverarbeitung'); array_walk($zahlen,'zahlenverarbeitungMitKey'); array_walk($zahlen,'zahlenverarbeitungMitKeyUndUserData', "im Zahlenarray"); // Aufruf als anonyme Funktion array_walk($zahlen,function($value,$key,$userdata) { echo ("$key => $value mit $userdata "); }, "im Zahlenarray"); ?> |
Die Funktion array_key_exists()
prüft, ob ein Schlüsselwert in einem Array vorhanden ist. Als erster Parameter wird der gesuchte Schlüssel und als zweiter Parameter das zu durchsuchende Array übergeben. Wenn der Schlüssel gefunden wurde, gibt die Funktion true
zurück.
Mit in_array()
wird ein Array nach einem Wert durchsucht. Dabei wird wieder der gesuchte Wert als erster Parameter übergeben. Den zweiten Parameter stellt das zu durchsuchende Array dar. Wird der Wert gefunden, so gibt die Funktion true
zurück.
Müssen die Schlüssel eines Arrays als Array verfügbar sein, so können ist hierfür die Funktion array_keys
zu nutzen. Als erster Parameter wird das Originalarray übergeben. Als zweiten Parameter kann ein Suchwert übergeben werden. Nach diesem Suchbegriff wird in den Werten des Arrays gesucht. Wird der Suchwert übergeben, werden nur die Schlüssel zurückgegeben, deren Schlüssel diese Werte beinhalten. Über einen dritten optionalen booleschen Parameter lässt sich angegeben, ob die Prüfung strikt durchgeführt werden soll oder ob eine Wertegleichheit ausreicht. Wird kein Suchwert angegeben, so werden alle Schlüssel zurückgegeben.
Die Funktion array_values
tut das gleiche für die Werte eines Arrays. Einziger Übergabeparameter ist das Originalarray selbst. Mit der Funktion ist es möglich, aus einem assoziativen Array ein Array mit einem numerischen Index zu generieren.