В циклах for() используйте вместо постинкремента ($i++) преинкремент (++$i)
Очень интересно стало, почему-же? Ведь люди пишут, которые знают о чем говорят.
Почитав в интернете, а точнее, несколько топиков из разных форумов, я узнал причину столь дерзкого отношения к постинкременту, попробую объяснить)
Общие понятия
Постинкремент по сути, как и преинкремент это увеличение (уменьшение) переменной на 1 единицу.
Т.е такая вот запись:
for($i=0; $i<=10; $i++) echo $i.'<br />';
выведет в вертикальную строку 10 записей. С каждой итерацией переменная $i будет увеличиваться на 1 единицу.
Объяснение отличия
Постинкремент, при увеличении на 1 единицу (также не забываем и про --) делает такие шаги:
- Создает в памяти ячейку, в которую заносит старое значение переменной
- Внутри ячейки увеличивает (или уменьшает) на единицу данное значение
- Заменяет исходное значение новым
- Удаляет ячейку
Разница в 4 шага!
Попробуем на практике
Первый скрипт:
for($i=0; $i<5000000; $i++);
Второй скрипт:
for($i=0; $i<5000000; ++$i);
Время выполнения 1 скрипта: 0.983823
Время выполнения 1 скрипта: 0.881252
Надеюсь, я был полезен) Спасибо за внимание!