24. April 2024

PHP: foreach Schleife

Ein Array in PHP lässt sich im Allgemeinen mit einer einfachen for-Schleife durchlaufen. Allerdings gibt es auch eine von der Schreibweise viel kürzere Variante, die in manchen Fällen auch die elegantere ist. Die Rede ist von der foreach Schleife, die in diesem Artikel im Kontrast zur „normalen“ for-Schleife nun Vorgestellt wird.

https://www.computer-masters.de/tl_files/cmde/article/php/foreach/main.png

Array mit for-Schleife durchlaufen

Zunächst wird das Durchlaufen eines Arrays mittels einer for-Schleife betrachtet. Dazu folgender Code:

<?php

#Array mit Gesteinsnamen
$beliebigesArray = array("Granit","Schiefer","Marmor","Sandstein","Kalk","Beton","Stahlbeton");

echo '-- Schleife 1 --<br>';
#Array komplett durchlaufen
for($i=0; $i<sizeof($beliebigesArray); $i++)
{
    echo 'Fuer diese Mauer ist '.$beliebigesArray[$i].' als Material zugelassen <br>';
}

echo '<br>-- Schleife 2 --<br>';
#Ober- und Untergrenze veraendern
for($i=2; $i<sizeof($beliebigesArray)-2; $i++)
{
    echo 'Als Bodenbelag ist '.$beliebigesArray[$i].' als Material zugelassen<br>';
}
?> 

Der Code führt zu folgender Ausgabe:

— Schleife 1 —
Fuer diese Mauer ist Granit als Material zugelassen
Fuer diese Mauer ist Schiefer als Material zugelassen
Fuer diese Mauer ist Marmor als Material zugelassen
Fuer diese Mauer ist Sandstein als Material zugelassen
Fuer diese Mauer ist Kalk als Material zugelassen
Fuer diese Mauer ist Beton als Material zugelassen
Fuer diese Mauer ist Stahlbeton als Material zugelassen

— Schleife 2 —
Als Bodenbelag ist Marmor als Material zugelassen
Als Bodenbelag ist Sandstein als Material zugelassen
Als Bodenbelag ist Kalk als Material zugelassen 

Der Schleifenkopf einer for-Schleife enthält relativ viel Code. Zunächst wird der Startwert einer Laufvariable festgelegt, dann folgt die Abbruchbedingung und schließlich die Art und Weise wie die Laufvariable in jedem Schritt verändert werden soll. Hier muss es nicht immer eine simple Erhöhung oder Verminderung um 1 sein, es können auch kompliziertere Rechenoperationen durchgeführt werden.

Es lässt sich also für eine for-Schleife festhalten:

VorteileNachteile
– Exakte Festlegung von Ober- und Untergrenze möglich
– Auf Laufvariable kann beliebige Rechenoperation durchgeführt werden
– Laufvariable selber kann zusätzliche Informationen bereitstellen (wo befindet man sich gerade?)
– Array benötigt durchnummerierte Schlüssel
– Benötigt viel Code
– Zugriff auf Attribute von Objekten aus dem Array sieht unübersichtlich aus
– Kann unperformanter als foreach Schleife sein

Die foreach-Schleife

Da das einfache und vollständige Durchlaufen eines Arrays in PHP einen sehr häufigen Anwendungsfall darstellt und man die oben genannten Vorteile einer for-Schleife auch nicht immer benötigt bietet es sich an mit einer foreach-Schleife zu arbeiten. Dazu folgender Code:

 <?php
#Array mit Gesteinsnamen
$beliebigesArray = array("Granit","Schiefer","Marmor","Sandstein","Kalk","Beton","Stahlbeton");

#Array komplett durchlaufen
foreach($beliebigesArray as $gestein)
{
    echo 'Fuer diese Mauer ist '.$gestein.' als Material zugelassen <br>';
}
?>

Der Code führt zu folgender Ausgabe:

Fuer diese Mauer ist Granit als Material zugelassen
Fuer diese Mauer ist Schiefer als Material zugelassen
Fuer diese Mauer ist Marmor als Material zugelassen
Fuer diese Mauer ist Sandstein als Material zugelassen
Fuer diese Mauer ist Kalk als Material zugelassen
Fuer diese Mauer ist Beton als Material zugelassen
Fuer diese Mauer ist Stahlbeton als Material zugelassen 

Der Code ist wesentlich schlanker geworden. Dem foreach-Schleifenkonstrukt muss nun nur noch das Array übergeben werden und es muss ein Variablenname für das Laufobjekt festgelegt werden, welches dann innerhalb der Schleife ganz einfach und ohne eine störende Laufvariable verwendet werden kann.

Wie man an der Ausgabe des Codes leicht erkennen kann wird mit der foreach-Schleife aus dem Beispiel die Schleife 1 aus dem obigen Beispiel mit den „normalen“ for-Schleifen vollständig abgebildet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert