<?php
$str = 'Hello';
for($i=0,$k = strlen($str); $i<$k; $i++) {
echo $str[$i]. ' ';
}
?>
Меня интересует вот это место:
$i=0,$k = strlen($str);
Слышал что постоянный вызов в цикле одной и той же функции является расходом динамической памяти.
Здесь функция strlen вызывается только один раз или при каждой итерации?
Так вернее писать?
Спустя 17 минут, 25 секунд (8.08.2011 - 17:24) neadekvat написал(а):
Цитата (romantik2011 @ 8.08.2011 - 18:06) |
Здесь функция strlen вызывается только один раз или при каждой итерации? |
Каждый раз. Правда, не думаю, что такая запись сильно тормозит работу скрипта. Но для очищения совести можно завести для этого новую переменную и ее подставить в цикл.
Спустя 21 минута, 3 секунды (8.08.2011 - 17:45) romantik2011 написал(а):
То есть только в первой итерации выполнится первое условие, то есть начнется отсчёт с нуля в первой итерации и вызовется лишь один единственный раз функция strlen?
Спустя 20 минут, 1 секунда (8.08.2011 - 18:05) jetistyum написал(а):
Эээ нет, тут ф-я strlen вызывается только один раз, т.к. находится в первой группе параметров цикла
$i=0, $k =strlen
тут же у вас не возникает сомнений что $i НЕ обнуляется при каждой итерации.
да и, что ж тут сложного проверить
$i = 0, $k = echo('test');
и увидишь
$i=0, $k =strlen
тут же у вас не возникает сомнений что $i НЕ обнуляется при каждой итерации.
да и, что ж тут сложного проверить
$i = 0, $k = echo('test');
и увидишь
Спустя 2 минуты, 14 секунд (8.08.2011 - 18:07) neadekvat написал(а):
Да, правда за jetistyum. Невнимательно посмотрел на цикл.
Спустя 13 часов, 20 минут, 14 секунд (9.08.2011 - 07:27) linker написал(а):
Это секция инициализации и выполняется один раз.