Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определить, что цикл закончился 
:(
    Опции темы
spiderlab
Дата 23.12.2010, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 23.12.2010

Репутация: нет
Всего: нет



Допустим есть функция (рекурсивная)

Код

function get(){
   foreach($var as $r){
    ...
    ...
    #Место где определять
    get();
   }
}


Там где #Место где определять, нужно выяснить последняя ли это прокрутка цикла или нет. Если это последняя итерация, то вывести что-то. Есть ли методы для этого кроме подсчёта кол-ва элементов массива и заведения счётчика ++ ?
PM MAIL   Вверх
ayax2005
Дата 23.12.2010, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


echo $smile
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 17.4.2008
Где: Питер

Репутация: 2
Всего: 11



Код

if (!next($var)) { echo "последний"; } 



--------------------
все вопросы - из-за неверной формулировки задачи
PM MAIL ICQ   Вверх
enoff
Дата 24.12.2010, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



ayax2005, указатель смещается чуть раньше, поэтому такой вариант не пойдет.
PM MAIL ICQ Skype GTalk   Вверх
ayax2005
Дата 24.12.2010, 01:32 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


echo $smile
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 17.4.2008
Где: Питер

Репутация: 2
Всего: 11



Да что вы говоритеsmile
Куда это интересно он смещается чуть раньше? т.е., по вашему, ну если указатель смещается "чуть раньше", foreach до последнего элесента вообще не доберётся)


--------------------
все вопросы - из-за неверной формулировки задачи
PM MAIL ICQ   Вверх
SamDark
Дата 24.12.2010, 03:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



ayax2005, 
next() смещает указатель, а не просто возвращает следующий элемент, поэтому enoff тут прав.


spiderlab, 
Проще всего переписать цикл на for:

Код

function get(){
   for($i=0,$count=count($var); $i<$count; $i++){
      if($i==$count-1)
        //do something
      get();
   }
}



--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
ayax2005
Дата 24.12.2010, 03:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


echo $smile
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 17.4.2008
Где: Питер

Репутация: 2
Всего: 11



SamDark, верняк, про внутренний указатель я не подумал)
В таком случае while(next($var)){} + постобработка вместо foreach


Это сообщение отредактировал(а) ayax2005 - 24.12.2010, 03:58


--------------------
все вопросы - из-за неверной формулировки задачи
PM MAIL ICQ   Вверх
enoff
Дата 24.12.2010, 14:04 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



ayax2005, если про внутренний не подумали, то о каком же указателе в предыдущем посте говорили? О внешнем?)
PM MAIL ICQ Skype GTalk   Вверх
BuShaRt
Дата 24.12.2010, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



SamDark прав. Foreach - это инструмент узкопрофильный, для упрощения написания/чтения кода, если же нужен полный функционал циклов, то следует пользоваться циклом For. Ну или если совсем банально, то в твоем случае можно выполнить функцию уже после интерации цикла, но до завершения исполнения функции.

Код

function get(){
   foreach($var as $r){
    ...
    ...
    #Место где определять
   }
get();
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0460 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.