Traversing Arrays Using foreach in PHP

By: Andi, Stig and Derick Printer Friendly Format    


There are a few different ways of iterating over an array. The most elegant way is the foreach() loop construct. The general syntax of this loop is

foreach($array as [$key =>] [&] $value)

...

$key is optional, and when specified, it contains the currently iterated value’s key, which can be either an integer or a string value, depending on the key’s type. Specifying & for the value is also optional, and it has to be done if you are planning to modify $value and want it to propagate to $array. In most cases, you won’t want to modify the $value when iterating over an array and will, therefore, not need to specify it.

Here’s a short example of the foreach() loop:

$players = array("John", "Barbara", "Bill", "Nancy");

print "The players are:\n";

foreach ($players as $key => $value) {

print "#$key = $value\n";

}

The output of this example is

The players are:

#0 = John

#1 = Barbara

#2 = Bill

#3 = Nancy

Here’s a more complicated example that iterates over an array of people and marks which person is considered old and which one is considered young:

$people = array(1 => array("name" => "John", "age" => 28),

.array("name" => "Barbara", "age" => 67));

foreach ($people as &$person) {

if ($person["age"] >= 35) {

$person["age group"] = "Old";

} else {

$person["age group"] = "Young";

}

}

print_r($people);

Again, this code makes use of the print_r() function. The output of the previous code is the following:

Array

(

[1] => Array

(

[name] => John

[age] => 28

[age group] => Young

)

[2] => Array

(

[name] => Barbara

[age] => 67

[age group] => Old

)

)

You can see that both the John and Barbara arrays inside the $people array were added an additional value with their respective age group.



Ask a Question



Most Viewed Articles (in PHP )

Latest Articles (in PHP)

Comment on this tutorial