Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2011, 18:11   #1
romantik2011
Пользователь
 
Регистрация: 20.07.2011
Сообщений: 70
По умолчанию Особенности цикла FOR

PHP код:
<?php
$str 
'Hello';

for(
$i=0,$k strlen($str); $i<$k$i++) {
    echo 
$str[$i]. ' ';
}

?>
Меня интересует вот это место:
PHP код:
$i=0,$k strlen($str); 
Слышал что постоянный вызов в цикле одной и той же функции является расходом динамической памяти.
Здесь функция strlen вызывается только один раз или при каждой итерации?
Так вернее писать?
romantik2011 вне форума Ответить с цитированием
Старый 08.08.2011, 18:35   #2
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

Мне кажется что правильнее и быстрее будет так
Код:
<?php
$str = 'Hello';
$k = strlen($str)
for($i=0; $i<$k; $i++) {
    echo $str[$i]. ' ';
}
?>
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 08.08.2011, 18:46   #3
romantik2011
Пользователь
 
Регистрация: 20.07.2011
Сообщений: 70
По умолчанию

То есть только в первой итерации выполнится первое условие, то есть начнется отсчёт с нуля в первой итерации и вызовется лишь один единственный раз функция strlen?
romantik2011 вне форума Ответить с цитированием
Старый 08.08.2011, 18:52   #4
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

Цитата:
Сообщение от romantik2011 Посмотреть сообщение
То есть только в первой итерации выполнится первое условие, то есть начнется отсчёт с нуля в первой итерации и вызовется лишь один единственный раз функция strlen?
Функция strlen вызывается один раз перед циклом. Длина строки заносится в переменную $k.
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 11.08.2011, 00:58   #5
Malme
Новичок
Джуниор
 
Аватар для Malme
 
Регистрация: 11.08.2011
Сообщений: 2
По умолчанию

Код:
for($i=0,$k = strlen($str); $i<$k; $i++) {
да, здесь strlen будет вычисляться $k раз.
Malme вне форума Ответить с цитированием
Старый 11.08.2011, 02:27   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
да, здесь strlen будет вычисляться $k раз.
с дубу рухнули?
с чего это секция инициализации выполняется много раз?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Особенности ShellExecute StalkerOnix Win Api 17 19.01.2011 11:46
Полиморфизм и его особенности Syltan PHP 3 07.12.2010 21:07
Особенности SSL OCTAGRAM Свободное общение 2 01.01.2010 16:42
Переход от цикла к циклу не выходя из цикла (без multithreading) Qousio Общие вопросы C/C++ 2 16.05.2009 09:27
Оператор цикла с предусловием While. Оператор цикла с пост условием Repeat McMilin Помощь студентам 7 11.11.2007 14:10