Что быстрее? есть ли причины использовать один над другим? 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){ ... }