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> 
							 |