PHP provides several ways to traverse arrays using both array iteration functions and language constructs:
array_walk
, array_map
, array_filter
, foreach
, list
/each
, and for
loops. We demonstrate and describe foreach
and other looping constructs on this page. We cover the iteration functions on another page.foreach
PHP's
foreach
loop provides a convenient way to iterate over arrays. There are two forms: one uses both the key and value of each array entry while the other uses only the value. First we demonstrate the key => value
form:$pets = ['Morie', 'Miki', 'Halo', 'lab' => 'Winnie'];
foreach ($pets as $key => $val) {
echo "$key => $val \n";
}
/* echo output (page source view)
0 => Morie
1 => Miki
2 => Halo
lab => Winnie
*/
The body of the loop uses
echo
to display the key and value of each array element in turn.
In this example,
foreach
uses only the value of the array elements:$pets = ['Morie', 'Miki', 'Halo', 'lab' => 'Winnie'];
foreach ($pets as $val) {
echo "$val \n";
}
/*
Morie
Miki
Halo
Winnie
*/
The
foreach
construct can be used to modify values of the array it traverses by using the reference sign (&
):$ar = [1, 2, 3, 4];
// use & (reference sign) to change values in array
foreach ($ar as &$value) {
$value *= 2;
}
print_r($ar);
/* Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
) */
unset($value); // unset reference to $ar element
list/each
Another common way to traverse arrays uses a
while
loop with the list
language construct and the each
function. The following example achieves the same result as the first foreach
example shown above:$pets = ['Morie', 'Miki', 'Halo', 'lab' => 'Winnie'];
reset($pets); // reset array pointer
while ( list($key, $val) = each($pets) ) {
echo "$key => $val \n";
}
/*
0 => Morie
1 => Miki
2 => Halo
lab => Winnie
*/
As you iterate over the array, the
each
function is used to return the current key-value pair and advance the array pointer. The list
function is used to assign the key and value to variables. The while
loop ends when the last element in the array is reached. The reset
function is invoked to restore the array pointer to the first element in the array.
The
list
/each
construct can be used with both key and value, or just value. The following example produces the same result as the second foreach
example shown above:$pets = ['Morie', 'Miki', 'Halo', 'lab' => 'Winnie'];
reset($pets);
while ( list(, $val) = each($pets) ) {
echo "$val \n";
}
/*
Morie
Miki
Halo
Winnie
*/
for
A
for
loop can be used to iterate over numerically indexed arrays, as we demonstrate here:$ar = ['Rudi', 'Morie', 'Halo', 'Miki'];
for ($i=0, $len=count($ar); $i<$len; $i++) {
echo "$ar[$i] \n";
}
/*
Rudi
Morie
Halo
Miki
*/
The above example used
echo
to display the current value in each iteration of the loop. You can also use a for
loop to modify the values, as the following demonstrates:$ar = [1, 2, 3, 4];
for ($i=0, $len=count($ar); $i<$len; $i++) {
$ar[$i] *= 2;
}
print_r($ar);
/* Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
) */
PHP Array Iteration Functions
Find out more about traversing arrays in PHP using the interation functions:
array_walk
, array_map
, and array_filter
.
0 comments:
Post a Comment