Какой лучший способ вычислить размер одного массива в операторе for?

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

Действительно ли переводчик такой тупой?

0

Решение

В этом случае в каждой итерации вы должны вызывать функцию count(), сложность времени O(n):

for($i = 0; $i < count($array); ++$i){ ... }

В этом случае вы звоните один раз count() в начале, и вы используете значение магазина $size, сложность времени O(1), Этот случай быстрее:

for($i = 0, $size = count($array); $i < $size; ++$i){ ... }
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]