[PHP 4, PHP 5, PHP 7, PHP 8]
The foreach
construct provides an easy way to iterate over arrays. foreach
works only on arrays and objects, and will issue an error when you try to use it on a variable with a different data type or an uninitialized variable. There are two syntaxes:
foreach [iterable_expression as $value] statement foreach [iterable_expression as $key => $value] statement
The first form traverses the iterable given by iterable_expression
. On each iteration, the value of the current element is assigned to
$value
.
The second form will additionally assign the current element's key to the $key
variable on each iteration.
Note that foreach
does not modify the internal array pointer, which is used by functions such as current[] and key[].
It is possible to customize object iteration.
In order to be able to directly modify array elements within the loop precede $value
with &. In that case the value will be assigned by reference.
Warning
Reference of a $value
and the last array element remain even after
the foreach
loop. It is recommended to destroy it by unset[]. Otherwise you will experience the following behavior:
It is possible to iterate a constant array's value by reference:
Note:
foreach
does not support the ability to suppress error messages using@
.
Some more examples to demonstrate usage:
Unpacking nested arrays with list[]
[PHP 5 >= 5.5.0, PHP 7, PHP 8]
It is possible to iterate over an array of arrays and unpack the nested array into loop variables by providing a list[] as the value.
For example:
The above example will output:
You can provide fewer elements in the list[] than there are in the nested array, in which case the leftover array values will be ignored:
The above example will output:
A notice will be generated if there aren't enough array elements to fill the list[]:
The above example will output:
Notice: Undefined offset: 2 in example.php on line 7 A: 1; B: 2; C: Notice: Undefined offset: 2 in example.php on line 7 A: 3; B: 4; C:
There are no user contributed notes for this page.