Differences between a while loop and a for loop in PHP?
I'm reading an ebook on PHP right now, and the author noted that the difference between a while loop and a for loop i开发者_C百科s that the for loop will count how many times it runs.
So take this:
<?php
for ($i = 1; $i < 10; $i = $i + 1) {
print "Number $i\n";
}
?>
But wouldn't this be the same as
<?php
$i = 1;
while ($i < 10) {
$i = $i + 1;
print "Number $i\n";
}
?>
Or is there some other differences that he didn't point out? (Aside from using while loop for when you're unsure of how long the condition will remain true, such as selecting rows from a database)
I mean, if that's the only difference, can't I just not use the for loop and use the while loop instead?
"For" expresses your intentions more clearly
Functionally, your two examples are the same. But they express different intentions.
while
means 'I don't know how long this condition will last, but as long as it does, do this thing.'for
means 'I have a specific number of repetitions for you to execute.'
You can use one when you mean the other, but it's harder to read the code.
Some other reasons why for
is preferable here
- It's more concise and puts all the information about the loop in one place
- It makes
$i
a local variable for the loop
Don't forget foreach
Personally, the loop I use most often in PHP is foreach
. If you find yourself doing things like this:
for ($i=0; $i < count($some_array); $i++){
echo $some_array[$i];
}
...then try this:
foreach ($some_array as $item){
echo $item;
}
Faster to type, easier to read.
Can you? Yes, certainly. But whether or not you should is an entirely different question.
The for
loop is more readable in this scenario, and is definitely the convention you'll find used within virtually every language that has looping directives. If you use the while
loop, people are going to wonder why you didn't use a for
loop.
Functionally, a for
loop is equivalent to a while
loop; that is, each can be rewritten as the other with no change to the outcome or side effects. However, each has different connotations. A while
loop runs while a condition holds; the condition is static, though circumstances change. A for
loop runs over a sequence. The difference is important to programmers but not programs, just as choice of variables names are important to programmers even though they can be changed to produce functionally equivalent code. One loop construct will make more sense than the other, depending on the situation.
A for-loop
for (INIT; CONDITIONS; UPDATE) {
BODY
}
is basically the same as a while-loop structured like this:
INIT
while (CONDITIONS) {
BODY
UPDATE
}
While you could technically use one or the other, there are situations where while
works better than for
and vice-versa.
The Main Difference Between for() and While() is that we have to define the limit or count but in while() loop we don't define limit or count it works until reached the last item
FOR LOOP Initialization may be either in loop statement or outside the loop. It is normally used when the number of iterations is known. Condition is a relational expression. It is used when initialization and increment is simple. for ( init ; condition ; iteration ) { statement(s); }
WHILE LOOP Initialization is always outside the loop. It is normally used when the number of iterations is unknown. Condition may be expression or non-zero value. It is used for complex initialization. while ( condition ) { statement(s); }
It's a matter of taste, personal preference and readability. Sometimes a while
loop works better logically. Sometimes, a for
.
For my personal rule, if I don't need a variable initializer, then I use a while
.
But a foreach
loop is useful in its own way.
Plus, in the case of PHP's scoping, where all variables not inside of functions are global, it the variable will continue living after the loop no matter which loop control you use.
精彩评论