foreach

PHP 4 ( nicht PHP 3 ) enthält ein foreach Konstrukt , genau wie Perl und einige andere Sprachen . Diese ermöglicht es , auf einfache Weise ein Array zu durchlaufen . foreach funktioniert nur in Verbindung mit Arrays . Wenn Sie versuchen foreach mit einer Variable eines anderen Datentyps oder einer nicht initialisierten Variable zu benutzen , gibt PHP einen Fehler aus . Es gibt zwei Syntax-Formen ; die zweite ist eine unbedeutende , aber sinnvolle Erweiterung der ersten Syntax :

 
foreach(

 
array_expression

 
as

 
$value

 
)

 
Anweisung

 
foreach(array_expression

 
as

 
$key

 
=

 
$value

 
)

 
Anweisung





Die erste Form durchläuft das array_expression -Array . Bei jedem Durchgang wird der Wert des aktuellen Elements $value zugewiesen und der interne Array-Zeiger um eins erhöht . Dadurch wird beim nächsten Durchgang automatisch das nächste Element ausgewertet .

Die zweite Form arbeitet genauso , außer dass bei jedem Durchlauf auch der aktuelle Schlüssel der Variablen $key zugewiesen wird .

Anmerkung : Sobald foreach zum ersten Mal ausgeführt wird , wird der interne Array-Pointer automatisch auf das erste Element des Arrays zurück gesetzt . Das bedeutet , dass Sie vor einem Durchlauf von foreach reset( ) nicht aufrufen müssen .



Anmerkung : Beachten Sie auch , dass foreach mit einer Kopie des angegebenen Arrays arbeitet , nicht mit dem Array selbst . Deshalb wird auch der Array-Pointer nicht wie bei dem each( ) -Konstrukt verändert und Veränderungen an ausgegebenen Arrayelementen haben keine Auswirkung auf das originale Array . Trotzdem wird der interne Arrayzeiger des originalen Arrays bei der Verarbeitung bewegt . Angenommen , die foreach-Schleife ist komplett abgearbeitet , wird der interne Arrayzeiger ( des originalen Arrays ) auf das letzte Element zeigen .



Anmerkung : Fehlermeldungen durch den Gebrauch von ' @ ' zu unterdrücken ist bei foreach nicht möglich .

Beachten Sie , dass die folgenden Beispiele in ihrer Funktionalität identisch sind :

 
reset

 
(

 
$arr)

 
;

 
while

 
(list(

 
,

 
$value

 
)

 
=

 
each

 
($arr)

 
)

 
{

 
echo

 
"Wert

 
:

 
$value

 
br

 
\n"

 
;

 
}

 
foreach

 
($arr

 
as

 
$value

 
)

 
{

 
echo

 
"Wert

 
:

 
$value

 
br

 
\n"

 
;

 
}



Auch hier funktioniert alles gleich:
 
reset

 
(

 
$arr)

 
;

 
while

 
(list($key

 
,

 
$value

 
)

 
=

 
each

 
($arr)

 
)

 
{

 
echo

 
"Schlüssel

 
:

 
$key

 
;

 
Wert

 
:

 
$value

 
br

 
\n"

 
;

 
}

 
foreach

 
($arr

 
as

 
$key

 
=

 
$value

 
)

 
{

 
echo

 
"Schlüssel

 
:

 
$key

 
;

 
Wert

 
:

 
$value

 
br

 
\n"

 
;

 
}





Noch einige Beispiele , die die Anwendung verdeutlichen :

 
/*

 
foreach

 
Beispiel

 
1

 
:




 
Nur

 
der

 
Wert

 
*

 
/

 
$a

 
=

 
array

 
(

 
1

 
,

 
2

 
,

 
3

 
,

 
17)

 
;

 
foreach

 
($a

 
as

 
$v

 
)

 
{

 
print

 
"Aktueller

 
Wert

 
von

 
\$a

 
:

 
$v.\n"

 
;

 
}

 
/

 
*

 
foreach

 
Beispiel

 
2

 
:




 
Wert

 
(

 
mit

 
Ausgabe

 
des

 
Array-Schlüssels

 
zur

 
Veranschaulichung

 
)

 
*

 
/

 
$a

 
=

 
array

 
(1

 
,

 
2

 
,

 
3

 
,

 
17)

 
;

 
$i

 
=

 
0

 
;

 
/

 
*

 
nur

 
zu

 
Veranschaulichung

 
*

 
/

 
foreach($a

 
as

 
$v

 
)

 
{

 
print

 
"\$a[$i

 
]

 
=

 
$v.\n"

 
;

 
$i++

 
;

 
}

 
/

 
*

 
foreach

 
Beispiel

 
3

 
:




 
Schlüssel

 
und

 
Wert

 
*

 
/

 
$a

 
=

 
array

 
(

 
"eins

 
"

 
=

 
1

 
,

 
"zwei

 
"

 
=

 
2

 
,

 
"drei

 
"

 
=

 
3

 
,

 
"siebzehn

 
"

 
=

 
17

 
)

 
;

 
foreach($a

 
as

 
$k

 
=

 
$v

 
)

 
{

 
print

 
"\$a[$k

 
]

 
=

 
$v.\n"

 
;

 
}

 
/

 
*

 
foreach

 
Beispiel

 
4

 
:

 
multidimensionale

 
Arrays

 
*

 
/

 
$a[0][0

 
]

 
=

 
"a"

 
;

 
$a[0][1

 
]

 
=

 
"b"

 
;

 
$a[1][0

 
]

 
=

 
"y"

 
;

 
$a[1][1

 
]

 
=

 
"z"

 
;

 
foreach($a

 
as

 
$v1

 
)

 
{

 
foreach

 
($v1

 
as

 
$v2

 
)

 
{

 
print

 
"$v2\n"

 
;

 
    }

 
}

 
/

 
*

 
foreach

 
Beispiel

 
5

 
:

 
dynamische

 
Arrays

 
*

 
/

 
foreach(array(1

 
,

 
2

 
,

 
3

 
,

 
4

 
,

 
5

 
)

 
as

 
$v

 
)

 
{

 
print

 
"$v\n"

 
;

 
}