PHP for loop vs. foreach with range
arrays, for-loop, foreach, loops, php
Solution
Traditional `for` loop is faster than `foreach` + `range`. The first one only uses integer comparison and increasing while the last one has to create an (possibly big) array and then extract each element by moving the internal array cursor and checking whether the end is reached.
If you execute this you can see that plain `for` is twice faster than `foreach` + `range`:
$t0 = microtime(true);
for ($i = 0; $i < 100000; $i++) {
}
echo 'for loop: ' . (microtime(true) - $t0) . ' s', PHP_EOL;
$t0 = microtime(true);
foreach (range(0, 100000) as $i) {
}
echo 'foreach + range loop: ' . (microtime(true) - $t0) . ' s', PHP_EOL;
It is better to use traditional `for` as a habit in the case you need to iterate a given number of times but at the end of the day you won't see big performance improvements in most scenarios (take into account that the example above iterates 100k times, if you reduce the number of iterations, the difference is smaller).
Problem
Which of these would be better for performance and readability? ``` foreach(range(0,10000) as $i) {} // 3.847 ms for($i = 0; $i < 10000; ++$i) {} // 0.663 ms ``` Edit: Did a benchmark and the last one was almost 6 times faster.