The PHP ‘for loop’ based on my experience is an underused PHP function. We all have seen the following…
<?php $array = [ ];// Of things for($i=1; $i <= count($array); $i++) { // Do something } ?>
This is what happens
- Initialise the loop with the variable $i set to 1
- Count how many items are in the array and compare with $i to see if it greater or less
- Do something
- Add 1 (increment) to $i
- Count how many items are in the array and compare with $i to see if it greater or less
- Do something
- Add 1 (increment) to $i
Repeat
And this works fine. Lets look at the structure of the ‘for loop’ and see what is happening.
The For Loop Structure
for( {exp1}; {exp2}; {exp3} ) { //Do something }
- Exp1 will be run once only and at the first time around the loop ( AKA an iteration)
- Exp2 Will run at the beginning of every iteration ( or go around the loop)
- Exp3 Will run at the end of every iteration.
In the original code if the array is large it can have a negative impact on performance. Can it be made better?
Yes. How about the following?
<?php $array = [ ];// Of things $array_count = count($array); for($i=1; $i <= $array_count; $i++) { // Do something } ?>
This works much better. The array is only counted once, but in my opinion it does not read well and feels clunky. What can be done?
The ‘for loop’ has 3 blocks (exp1, exp2, exp3) each separated with a colon. What you put in these blocks is upto you, you can even leave them blank. That being said lets rewrite the original code so that
- It works as expected
- It does so efficiently
- When you read it, it makes clearer sense;
<?php $array = [ ];// Of things for($i=1, $array_count = count($array); $i <= $array_count; $i++) { // Do something } ?>
Is that not better?
See PHP.net for more
Comments are closed.