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 :: Опять рекурсия

 PHP.SU

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


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

> Без описания
Yamazuki
Отправлено: 25 Февраля, 2016 - 21:43:18
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2016  


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




Приветствую. Уверен, что тем кто понимает, это уже довольно намазолившая мозг тема, но не могу заставить перебрать элементы (не папки и файлы, с ними больше примеров и проще).

Я уже написал функцию которая возвращает некий массив из папок (это не те папки что файловая структура) с параметрами типа УРЛ и прочим. И ниже использую ее вызывая как "get_folders".

PHP:
скопировать код в буфер обмена
  1.  
  2. function recurse($url){
  3.         $aaa = get_folders($url, $params);
  4.        
  5.        
  6.         if(count($aaa) == 0){
  7.                 echo "Не содержит папки";
  8.         }else{
  9.                 foreach($aaa as $p){
  10.                         echo "URL следующей папки: ".$p['url'];
  11.                         return recurse($p['url']);
  12.                 }
  13.         }
  14. }


Тобиш функция get_folders возвращает массив который имеет следующий вид и хранит он УРЛы папок по указанному УРЛ:
$aaa[0]['url'] = "некий урл 1"
$aaa[1]['url'] = "некий урл 2"
$aaa[2]['url'] = "некий урл 3"....

В массиве $aaa есть и иные параметры, но они сейчас не играют роли. Этот массив я нигде не храню, он глобально не объявлен, он только возвращается в рекурсивную функцию из функции get_folders. Хотя я и пробовал объявлять, и пробовал его передавать в рекурсии и что только не пробовал %)

В итоге все чего я добился - это то, что рекурсивная функция уходит на 1 уровень вниз и на этом загибается. Так как там нет вложенных папок.

Я читал на этом форуме ответ по аналогичной ситуации, но там случай с папками, и я не совсем понят как это применить на мой случай.

(Отредактировано автором: 25 Февраля, 2016 - 21:44:09)

 
 Top
DelphinPRO
Отправлено: 25 Февраля, 2016 - 22:33:14
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




у вас функция recirse ничего не возвращает. вот и вся проблема
(Добавление)
т.е. она возвращает результат работы самой себя, но сама ничего не возвращает, и результат ее работы соответственно пустой (null)


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Yamazuki
Отправлено: 25 Февраля, 2016 - 22:36:10
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2016  


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




а return recurse($p['url']);? это не то?

точнее я понял уже что это не то, но... эээ как же быть? Она должна вернуть какой то из массивов?

P.S Я просто не пойму. Я проваливаюсь в функцию ниже, но функция выше осталась же в цикле? Логика не совсем ясна.
(Добавление)
[quote=Yamazuki][/quote]

А если я просто уберу return? %)

(Отредактировано автором: 25 Февраля, 2016 - 22:58:01)

 
 Top
andrewkard
Отправлено: 26 Февраля, 2016 - 11:21:55
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


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




Yamazuki
Посмотрите тут: https://learn[dot]javascript[dot]ru/recursion
Расписано последовательно.
 
 Top
Yamazuki
Отправлено: 26 Февраля, 2016 - 18:19:55
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2016  


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




А я убрал return и всё заработало из изначального кода %))))) Проверил и убедился - все ок.
 
 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