Looping through arrays with foreach
Available news archives: comp.lang.tcl - comp.lang.python - comp.security.firewalls - sci.crypt - comp.lang.php - comp.lang.javascript
Google
 
Web news.hping.org


comp.lang.php archive

Looping through arrays with foreach

From: Sjoerd <sjoerder@gmail.com>
Date: Fri Mar 31 2006 - 12:29:42 CEST

Summary: Use foreach(..) instead of while(list(..)=each(..)).

--=[ How to use foreach ]=--

Foreach is a language construct, meant for looping through arrays.
There are two syntaxes; the second is a minor but useful extension
of the first:

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

For example:
<?php
$arr = array("one", "two", "three");
foreach ($arr as $value) {
    echo "Value: $value\n";
}
?>

This will output:
Value: one
Value: two
Value: three

--=[ Why not to use list & each ]=--

Another method to loop through an array is the following:
<?php
while (list(, $value) = each($arr)) {
    echo "Value: $value<br />\n";
}
?>

This has some disadvantages:
- It is less clear, because list() looks like a function but
  actually works the other way around: instead of returning
  something, it takes a parameter by being the left-hand side
  of the expression and assigns values to the parameters.
- You have to reset() the array if you want to loop through it
  again.
- It is approx. three times slower than foreach.

--=[ About for & count ]=--

Another method to loop through an array:
for ($i = 0; $i < count($arr); $i++) {
    echo "value: $arr[$i]\n";
}

Consider this array:
array(5 => "Five");

The above for-loop would loop from elements 0 through 5, while
only one element exists. If this is what you want, the for-loop
is an effective way to loop through an array. If not, use
foreach instead.
Received on Mon May 1 02:45:41 2006