Что быстрее? Есть ли причины использовать один над другим?
for($i = 0; $i < count($array); ++$i){ ... }
ИЛИ ЖЕ
for($i = 0, $size = count($array); $i < $size; ++$i){ ... }
http://php.net/manual/en/control-structures.for.php гласит: «Приведенный выше код может быть медленным, потому что размер массива выбирается на каждой итерации. Поскольку размер никогда не меняется, цикл можно легко оптимизировать, используя промежуточную переменную для хранения размера вместо многократного вызова count ():»
Действительно ли переводчик такой тупой?
В этом случае в каждой итерации вы должны вызывать функцию count()
, сложность времени O(n)
:
for($i = 0; $i < count($array); ++$i){ ... }
В этом случае вы звоните один раз count()
в начале, и вы используете значение магазина $size
, сложность времени O(1)
, Этот случай быстрее:
for($i = 0, $size = count($array); $i < $size; ++$i){ ... }
Других решений пока нет …