foreach

PHP כוללת את פקודת foreach מגרסה 4 בלבד . בדומה לפרל ושפות אחרות , ניתן בעזרת פקודה זו לבצע בפשטות איטרציות על מערך . קיימים לפקודה שני סוגי תחביר . השני מהווה הרחבה חשובה לראשון :






בצורה הראשונה הלולאה רצה לאורכו של המערך array_expression . בכל איטרציה ערכו של תא מהמערך מוצב במשתנה $value וערכו של מצביע פנימי למערך מקודם לאבר הבא ( כך שבלולאה הבאה תקבל את ערכו של האבר הבא ) .

הצורה השנייה מבצעת את אותה הפעולה , אך ערך המפתח של האיבר הנוכחי מוצב במשתנה $key בכל איטרציה ( ערך המפתח הוא מספר או מחרוזת שמציינים את שמו או מיקומו של איבר מסויים במערך ) .

הערה : כאשר מתחיל ביצוע לולאת foreach , ערכו של המצביע הפנימי מאותחל לאבר הראשון במערך . כלומר , אין צורך לבצע קריאה לפונקציה reset( ) לפני לולאת foreach .



הערה : שים לב גם לכך שלולאת foreach פועלת על שיכפול של המערך המסויים ולא על המערך עצמו ולכן ערכו של מצביע המערך אינו משתנה כמו בפקודת each( ) .



הערה : לולאת foreach לא תומכת בהשקטת הוראות שגיאה בעזרת ' @ ' .

הלולאות הבאות זהות מבחינה פונקציונאלית :




גם הדוגמאות הבאות זהות:





הנה דוגמאות נוספת :

 
/*

 
foreach

 
example

 
1

 
:

 
value

 
only

 
*

 
/

 
$a

 
=

 
array

 
(

 
1

 
,

 
2

 
,

 
3

 
,

 
17)

 
;

 
foreach

 
($a

 
as

 
$v

 
)

 
{

 
print

 
"Current

 
value

 
of

 
\$a

 
:

 
$v.\n"

 
;

 
}

 
/

 
*

 
foreach

 
example

 
2

 
:

 
value

 
(with

 
key

 
printed

 
for

 
illustration

 
)

 
*

 
/

 
$a

 
=

 
array

 
(1

 
,

 
2

 
,

 
3

 
,

 
17)

 
;

 
$i

 
=

 
0

 
;

 
/

 
*

 
for

 
illustrative

 
purposes

 
only

 
*

 
/

 
foreach($a

 
as

 
$v

 
)

 
{

 
print

 
"\$a[$i

 
]

 
=

 
$v.\n"

 
;

 
}

 
/

 
*

 
foreach

 
example

 
3

 
:

 
key

 
and

 
value

 
*

 
/

 
$a

 
=

 
array

 
(

 
"one

 
"

 
=

 
1

 
,

 
"two

 
"

 
=

 
2

 
,

 
"three

 
"

 
=

 
3

 
,

 
"seventeen

 
"

 
=

 
17

 
)

 
;

 
foreach($a

 
as

 
$k

 
=

 
$v

 
)

 
{

 
print

 
"\$a[$k

 
]

 
=

 
$v.\n"

 
;

 
}

 
/

 
*

 
foreach

 
example

 
4

 
:

 
multi-dimensional

 
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

 
example

 
5

 
:

 
dynamic

 
arrays

 
*

 
/

 
foreach(array(1

 
,

 
2

 
,

 
3

 
,

 
4

 
,

 
5

 
)

 
as

 
$v

 
)

 
{

 
print

 
"$v\n"

 
;

 
}