77 lines
2.2 KiB
Markdown
77 lines
2.2 KiB
Markdown
|
---
|
||
|
title: For Loop
|
||
|
---
|
||
|
|
||
|
## For Loop
|
||
|
|
||
|
The PHP `for` statement consists of three expressions and a statement:
|
||
|
|
||
|
`for ((initialization); (condition); (final-expression)) statement`
|
||
|
|
||
|
### Description
|
||
|
|
||
|
- initialization
|
||
|
- Run before the first execution on the loop.
|
||
|
- This expression is commonly used to create counters.
|
||
|
- Variables created here are scoped to the loop. Once the loop has finished it is execution they are destroyed.
|
||
|
- condition
|
||
|
- Expression that is checked prior to the execution of every iteration.
|
||
|
- If omitted this expression evaluates to `true`.
|
||
|
- final-expression
|
||
|
- Expression that is run after every iteration.
|
||
|
- Usually used to increment a counter.
|
||
|
- But it can be used to run any expression.
|
||
|
- statement
|
||
|
- Code to be repeated in every loop iteration.
|
||
|
|
||
|
Any of these three expressions or the statement can be ommited.
|
||
|
|
||
|
The expressions can contain multiple expressions separated by comma.
|
||
|
|
||
|
In the (condition) expression, all the comma separated expressions will be evaluated.
|
||
|
|
||
|
The result is obtained from the last one.
|
||
|
|
||
|
For loops are commonly used to count a certain number of iterations to repeat a statement.
|
||
|
|
||
|
### Common Pitfalls
|
||
|
|
||
|
#### Exceeding the bounds of an array
|
||
|
|
||
|
When indexing over an array many times it is easy to exceed the bounds of the array (ex. try to reference the 4th element of a 3 element array).
|
||
|
|
||
|
```php
|
||
|
// This will cause an error.
|
||
|
// The bounds of the array will be exceeded.
|
||
|
$arr = array(1,2,3);
|
||
|
|
||
|
for ($i = 0; $i <= count($arr); $i++) {
|
||
|
var_dump($arr[$i]);
|
||
|
}
|
||
|
```
|
||
|
|
||
|
This will output:
|
||
|
|
||
|
```txt
|
||
|
int(1) int(2) int(3) NULL
|
||
|
```
|
||
|
|
||
|
There are to ways to fix this code.
|
||
|
|
||
|
Set the condition to either `$i < count($arr)` or `$i <= count($arr) - 1`.
|
||
|
|
||
|
#### Performance Issues
|
||
|
|
||
|
The above code can became slow, because the array size is fetched in every iteration.
|
||
|
|
||
|
In order to fix this problem it is possible to put the array size into a variable.
|
||
|
|
||
|
```php
|
||
|
//create the $size variable with a second expression comma separated
|
||
|
for ($i = 0, $size = count($arr); $i < $size; ++$i) {
|
||
|
```
|
||
|
|
||
|
### More Information
|
||
|
|
||
|
- <a href='https://secure.php.net/manual/en/control-structures.for.php' target='_blank' rel='nofollow'>PHP.net - Control Structures</a>
|