php, foreach Schleife, foreach Beispiele

Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

foreach Schleife in Php

Sie befinden sich: Home > Php > foreach Schleife in Php

Das PHP-Sprachkonstrukt foreach stellt eine einfache und schnelle Lösung dar, wenn jedes Element eines Arrays überprüft oder verändert werden soll. Man spricht hierbei auch von einer Iteration. Eine foreach-Schleife kann ausschließlich auf Arrays und Objekte angewendet werden, eine Anwendung auf Integer oder Charakterstrings, oder allgemein anderen Variablen führt zu Fehlern. PHP stellt zwei Arten der foreach-Schleife zur Verfügung, wobei die zweite Variante etwas ungewöhnlicher, jedoch gelegentlich zum Einsatz kommt.

foreach (array as $wert)
Ausdruck (z. B. echo $wert;)

foreach (array as $key => $wert)
Ausdruck (z. B. echo $wert;)

Die erste Funktion schreibt bei jedem Durchlauf des Arrays das aktuelle Element in die Variable $wert, und inkrementiert (erhöhen um eins) den internen Zeiger auf das Array um eins, um auf das nächste Element zugreifen zu können.

Die zweite Variante der foreach-Schleife gleicht grundsätzlich der ersten, jedoch wird zusätzlich zum Feldinhalt auch der Feldname (Schlüssel) an die Variable $key übergeben. Dies ist dann sinnvoll, wenn es sich um ein Array mit assoziativen Feldindizes handel.

Der interne Zeiger auf das entsprechende Array wird beim Aufruf von foreach(); automatisch auf das erste Element gesetzt, so, dass ein zusätzlicher Aufruf von reset(); entfallen kann.

Seit PHP 7 arbeitet foreach direkt auf dem Original-Array, wenn &$wert verwendet wird. Möchte man Werte im Array ändern, verwendet man die Referenz-Schreibweise (foreach ($array as &$wert)), wie im folgenden Beispiel gezeigt.

Das folgende Beispiel erläutert die grundlegende Funktionsweise:

<?php
$feld_eins = array(1, 2, 3, 4);
/**
* Das & Zeichen vor $wert muss verwendet
*  werden damit der Wert des Elements verändert
* werden kann.
**/

foreach ($feld_eins as &$wert) {
  $wert = $wert * 2;
}
/**
* $feld_eins hat nun folgenden Inhalt (2, 4, 6, 8)
**/

/**
* Ein weiteres Beispiel dieses Mal
* für ein zweidimensionales Array
**/
$feld_zwei = array();

/**
* eine für PHP ungewöhnliche
* Zuweisung für Felder eines Arrays
**/
$feld_zwei[0][0] = "a";
$feld_zwei[0][1] = "b";
$feld_zwei[1][0] = "y";
$feld_zwei[1][1] = "z";

foreach ($feld_zwei as $wert1) {
   foreach ($wert1 as $wert2) {
     echo $wert2;
   }
}
/**
* für assoziative Arrays, die Ausgabe
* bezieht sich hier auf die Indizes z.B. "a"
**/
$feld_drei = array("a"=>"1","b"=>"2", "c"=>"3","d"=>"4");
foreach ($feld_drei as $key =>$wert_3) {
   echo $key; // abcd
}
?>

Erklärung:

Mithilfe des Schlüsselwortes „foreach“ können wir durch ein Array gehen. Wir können einen bestimmten Wert auslesen oder aber auch verändern. Im ersten Beispiel haben wir ein eindimensionales Array namens „$feld_eins“ mit den Werten (1,2,3,4). Dann haben wir den Befehl „foreach“ verwendet, um jeden Wert im Array zu verdoppeln. Damit der Wert des Elements verändert werden kann, müssen wir ein &-Zeichen vor $wert setzen. Nachdem wir den Befehl ausgeführt haben, hat das Array den Inhalt (2,4,6,8). 

Im zweiten Beispiel haben wir ein zweidimensionales Array namens „$feld_zwei“. Hier haben wir eine für PHP ungewöhnliche Zuweisung verwendet, indem wir die Werte des Arrays direkt zugewiesen haben. Der Inhalt dieses Arrays ist: ("a", "b", "y", "z"). Wir haben wieder den Befehl „foreach“ verwendet, um jeden Wert im Array auszulesen und auf dem Bildschirm auszugeben. 

Im dritten Beispiel haben wir ein assoziatives Array namens „$feld_drei“. Da es sich hierbei um ein assoziatives Array handelt, steht der Schlüssel neben dem Wert. Der Inhalt des Arrays ist: ("a"=>"1", "b"=>"2", "c"=>"3", "d"=>"4"). Auch hier wurde wieder der Befehl „foreach“ verwendet, um jeden Wert im Array auszulesen und auf dem Bildschirm auszugeben.

foreach ist schneller und einfacher als eine vergleichbare while-Schleife. Das folgende Beispiel zeigt die empfohlene Vorgehensweise mit foreach:

Hinweis: Die früher verwendete Kombination aus while(), list() und each() ist seit PHP 8.0 nicht mehr verfügbar, da each() entfernt wurde. Verwenden Sie stattdessen immer foreach:

<?php
/**
* der interne Zeiger wird automatisch durch den Aufruf auf
* das erste Element gesetzt
**/
foreach($feld as $key => $wert){
  $feld[$key] = $wert + 1;
}
?>

Man sollte vor dem Ausführen einer foreach Schleife, die Variable mit dem PHP Befehl is_array() prüfen, da ansonsten eine Fehlermeldung ausgegeben wird, wenn die Variable kein Array ist.

 

Fehlerbehandlung bei foreach

Seit PHP 8.0 wirft foreach einen TypeError, wenn die übergebene Variable kein Array und kein Traversable-Objekt ist. Dieser Fehler kann mit einem try-catch-Block gefangen werden:

<?php
try {
    foreach ($daten as $element) {
        // Code hier ausführen
    }
} catch (\TypeError $e) {
    echo 'Fehler: ' . $e->getMessage();
}
?>

Empfohlene Vorgehensweise: Prüfen Sie die Variable vor dem foreach-Aufruf mit is_iterable() oder is_array(), anstatt Fehler erst zur Laufzeit abzufangen:

<?php
if (is_iterable($daten)) {
    foreach ($daten as $element) {
        // Code hier ausführen
    }
}
?>
weiter while-Schleife und do-while-Schleife

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.