Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Особенности цикла FOR

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
romantik2011
Отправлено: 08 Августа, 2011 - 17:08:47
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $str = 'Hello';
  4.  
  5. for($i=0,$k = strlen($str); $i<$k; $i++) {
  6.         echo $str[$i]. ' ';
  7. }
  8.  
  9. ?>
  10.  
  11.  


Меня интересует вот это место:

Слышал что постоянный вызов в цикле одной и той же функции является расходом динамической памяти.
Здесь функция strlen вызывается только один раз или при каждой итерации?
Так вернее писать?

(Отредактировано автором: 08 Августа, 2011 - 17:11:14)

 
 Top
Мелкий Супермодератор
Отправлено: 08 Августа, 2011 - 17:17:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Только один раз, да, так вернее.


-----
PostgreSQL DBA
 
 Top
SAD
Отправлено: 08 Августа, 2011 - 17:23:27
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




[]

(Отредактировано автором: 08 Августа, 2011 - 17:25:32)

 
 Top
romantik2011
Отправлено: 08 Августа, 2011 - 17:28:48
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Только один раз при такой записи внутри цикла ФОР?
 
 Top
SAD
Отправлено: 08 Августа, 2011 - 17:37:04
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




только 1
 
 Top
romantik2011
Отправлено: 08 Августа, 2011 - 17:45:44
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




То есть только в первой итерации выполнится первое условие, то есть начнется отсчёт с нуля в первой итерации и вызовется лишь один единственный раз функция strlen?
На другом форуме просто сказали что постоянно, а не 1 раз.

(Отредактировано автором: 08 Августа, 2011 - 17:46:03)

 
 Top
Мелкий Супермодератор
Отправлено: 08 Августа, 2011 - 17:47:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




romantik2011, собственно, можете и поэкспериментировать:
PHP:
скопировать код в буфер обмена
  1. function foo() {
  2. echo "запустились<br>";
  3. return 50;
  4. }
  5. for($i=0,$k = foo(); $i<$k; $i++) {
  6.         echo $i;
  7. }


А вот, кстати, обращение к строке, как массиву - некорректно будет для utf8 и прочего мультибайта работать.


-----
PostgreSQL DBA
 
 Top
SAD
Отправлено: 08 Августа, 2011 - 17:48:14
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




при такой записи for($i=0,$k = strlen($str); $i<$k; $i++) - один раз
при такой записи for($i=0,$i < strlen($str); $i++) - каждый раз

(Отредактировано автором: 08 Августа, 2011 - 17:48:33)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB