tags:

views:

68

answers:

5

what are the difference between for loop & for each loop in php?

A: 

It should be pretty simple

foreach sort of asbtracts away some of the complexity and is usually easier. I use this whenever I don't need to know the numeral index of the array or $key => $value won't provide me with it.

for is the older C style where you must first perform a count() so you know how many iterations the loop requires. It is useful when you need to know the index, or to count backwards or step through in different groups.

alex
`expr2` in a `for` can be whatever you consider the end condition. It does not have to be `count()`. For instance, with an Iterator you could do `for($it->rewind(); $it->valid(); $it->next()) { /* ... */}`, but it could also be a callback, db query, whatever.
Gordon
@Gordon: I was about to say something similar. Everyone here seems to think that `for` loops can only be used with numbers...
Felix Kling
@Felix @Gordon Well I tried to make it a simple example for traversing an array. But thanks for your input.
alex
A: 

Foreach is basically a shortcut for doing the following

//Foreach method
foreach ($myArray as $myVar)
{
}

//Normal for equivalent
for ($i = 0; $i < $limit; $i++)
{
$myVar = $myArray[$i];
}

But there are other issues too, read this article about it

Chris
+4  A: 

Foreach is great for iterating through arrays that use keys and values.

For example, if I had an array called 'User':

$User = array(
    'name' => 'Bob',
    'email' => '[email protected]',
    'age' => 200
);

I could iterate through that very easily and still make use of the keys:

foreach ($User as $key => $value) {
    echo $key.' is '.$value.'<br />';
}

This would print out:

name is Bob
email is [email protected]
age is 200

With for loops, it's more difficult to retain the use of the keys.

When you're using object-oriented practice in PHP, you'll find that you'll be using foreach almost entirely, with for loops only for numerical or list-based things. foreach also prevents you from having to use count($array) to find the total number of elements in the array.

Lotus Notes
A: 

foreach being used to iterate arrays and nothing else.
for is the general purpose counter-based loop

Col. Shrapnel
As of PHP 5, it is possible to iterate objects too.
Gordon
+1  A: 

A "for" loop gives you an incrementing number (in its most common use) which you can use any way you like.

"foreach" is a special construct made for looking at successive members of an array.

As an example, you can use a "for" loop to create something that does what "foreach" does. But foreach does that with less required code.

gbarry
`for` only gives you an incrementing number if you defined it to do so. The used expressions in a `for` are arbitrary.
Gordon