for
(PHP 4, PHP 5, PHP 7, PHP 8)
for loops are the most complex loops in PHP.
They behave like their C counterparts. The syntax of a
for loop is:
The first expression (expr1) is
evaluated (executed) once unconditionally at the beginning of the
loop.
At the beginning of each iteration,
expr2 is evaluated. If it evaluates to
true, the loop continues and the nested
statement(s) are executed. If it evaluates to
false, the execution of the loop ends.
At the end of each iteration, expr3 is
evaluated (executed).
Each of the expressions can be empty or contain multiple
expressions separated by commas. In expr2, all
expressions separated by a comma are evaluated but the result is taken
from the last part.
expr2 being empty means the loop should
be run indefinitely (PHP implicitly considers it as
true, like C). This may not be as useless as
you might think, since often you'd want to end the loop using a
conditional break
statement instead of using the for truth
expression.
Consider the following examples. All of them display the numbers
1 through 10:
Of course, the first example appears to be the nicest one (or
perhaps the fourth), but you may find that being able to use empty
expressions in for loops comes in handy on many
occasions.
PHP also supports the alternate "colon syntax" for
for loops.
Expressions expr2 and expr3 are
evaluated every iteration. It's advisable to use simple expressions in these
places to avoid performance issues. For example, if the number of iterations
is known in advance, it is better to use a variable instead of a function call
in expr2:
In the example above, the function is called on every iteration of the
first loop, even though it always returns the same value. Storing that
value in a variable, as the second loop does, calls the function once.
Note that the number of iterations is then fixed: if the array is
modified inside the loop, the stored value no longer reflects its size.
Зауваження:
The size of an array is stored with the array, which means that
calling the built-in function count() does not require
counting the elements and does not cause performance issues. This does not
apply to COUNT_RECURSIVE, which walks the whole array.
Care should also be taken when using count() on objects
implementing Countable, as such calls can be
more expensive.
Зауваження:
The for loop is not the recommended way to
iterate over arrays. The foreach loop is specifically
designed for this purpose and is usually more convenient.