foreach Schleife in PhpSie befinden sich: Home > Php > foreach Schleife in Php
Die PHP Funktion foreach(); stellt eine einfache und schnelle Lösung da, wenn jedes Element eines Array überprüft oder verändert werden soll. Man spricht hierbei auch von einer iterativen Funktion. Eine foreach(); Schleife kann ausschließlich auf Arrays angewendet werden, eine Anwendung auf Integer oder Charakterstrings, oder allgemein anderen Variablen führt zu Fehlern. PHP stellt zwei Arten der foreach(); Schleife zu Verfügung, wobei die zweite Variante etwas ungewöhnlicher, jedoch gelegendlich 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 Funktion der foreach(); Schleife gleicht grundsätzlich der ersten, jedoch wird nicht der Feldinhalt sondern der Feldname an die Varibale $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 das ein zusätzlicher Aufruf von reset(); entfallen kann.
Sollte das Array vor dem Aufruf einer foreach(); Schleife bereits referenziert worden sein, ist zu beachten das foreach(); selbst nur auf die Kopie zugreift, und das Orginal auf diese Weise nicht verändert werden kann. ( Um beide Arrays sowohl das Original wie auch die Referenz verändern zu können muss der Befehl each(); verwendet werden ( siehe das Beispiel für die Möglichkeit while - Schleifen durch foreach(); zu ersetzen )).
Das folgende Beispiel erläutert die grundlegende Funktionsweise :
1 <?php
2 $feld_eins = array(1, 2, 3, 4);
3 // das & Zeichen vor $wert muss verwendet
4 // werden damit der Wert des Elements verändert
5 // werden kann
6
7 foreach ($feld_eins as &$wert) {
8 $wert = $wert * 2;
9 }x
10 // $feld_eins hat nun folgenden Inhalt (2, 4, 6, 8)
11
12 // ein weiteres Beispiel diesesmal
13 // für ein zweidimensionales Array
14 $feld_zwei = array();
15
16 // eine für PHP ungewöhnliche
17 // Zuweisung für Felder eines Arrays
18 $a[0][0] = "a";
19 $a[0][1] = "b";
20 $a[1][0] = "y";
21 $a[1][1] = "z";
22
23 foreach ($feld_zwei as $wert1) {
24 foreach ($wert1 as $wert2) {
25 echo "$wert2";
26 }
27 }
28 // für assoziative Arrays, die Ausgabe
29 // bezieht sich hier auf die Indizes z.B. "a"
30 $feld_drei = array("a"=>"1","b"=>"2", "c"=>"3","d"=>"4");
31 foreach ($feld_eins as $key =>$wert_3) {
32 echo $wert_3; // abcd
33 }
34 ?>
|
foreach(); ist schneller als while(), das folgende Beispiel zeigt wie man eine while - Schleife durch eine foreach(); Schleife ersetzen kann
1 <?php
2 // reset(); muss ausgeführt werden
3 // damit der interne Zeiger auf das erste
4 reset($feld);
5 // Element gesetzt wird.
6 while(list($key, $wert) = each($feld)){
7 $feld[$key] = $wert + 1;
8 }
9 ?>
|
Obfohl es funktionale Unterschiede gibt , verhält sich das folgende Beispiel wie das oben aufgeführte, ist jedoch erheblich schneller.
1 <?php
2 // der interne Zeiger wird
3 // automatisch durch den Aufruf auf
4 // das erste Element gesetzt
5 foreach($feld as $key => $wert){
6 $feld[$key] = $wert + 1;
7 }
8 ?>
|
Man sollte vor den ausführen einer
foreach Schleife, die Variable mit
den PHP Befehl is_array() prüfen,
da ansonsten eine Fehlermeldung ausgegeben
wird, wenn die Variable kein Array
ist.
weiter Dateihandling mit PHP
|