Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / вывод рекурсивной функции / 5 сообщений из 5, страница 1 из 1
23.10.2012, 10:23:12
    #38009321
kiril.tll
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод рекурсивной функции
Приветсвую.
Делаю многоуровневый каталог такой функцией:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
function get_menu_path($curmenu=0)
 {
 static $cattree;
 $qchildextr="SELECT title, nest_under, id FROM таблица WHERE id='$curmenu';";
 $schildextr = mysql_query($qchildextr);
 $num_child = mysql_num_rows($schildextr);
 if ($num_child>0)
  {
   while (list($title, $nest_under) = mysql_fetch_row($schildextr))
    {
      $cattree .= "$title > ";
      get_menu_path($nest_under);
    }

  }
  mysql_free_result($schildextr);
  return "$cattree";
 }



При однократном выводе

Код: php
1.
echo (get_menu_path(2));



выводит нормально путь как он должен быть (напр. Samsung > Uninet > Toner > ), если вывожу 2 и более раза

Код: php
1.
2.
echo (get_menu_path(2));
echo (get_menu_path(4));



то выводит
первый корректно - Samsung > Uninet > Toner >
второй - Samsung > Uninet > Toner > Samsung > Uninet > Chips >
т.е. он повторяет предыдущий вызов. Не подскажете, как исправить так, чтоб выводил только то, что его просят?
...
Рейтинг: 0 / 0
23.10.2012, 10:26:26
    #38009327
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод рекурсивной функции
kiril.tll,

static $cattree;

эта переменная сохраняет свое значение между вызовами функции.
надо переписать функцию так чтобы она обнулялась когда вызываете функцию вручную, и необнулялась когда вызываете рекурсивно внутри другой
...
Рейтинг: 0 / 0
23.10.2012, 10:59:11
    #38009408
kiril.tll
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод рекурсивной функции
r u,

Да, про static я знал, но клинило меня день. Спасибо, работы то на 5 минут!
...
Рейтинг: 0 / 0
24.10.2012, 20:25:38
    #38012139
SergSW
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод рекурсивной функции
static в рекурсивной функции бр...

так по лучше будет
Код: php
1.
2.
3.
4.
5.
6.
function get_menu_path($curmenu=0, $cattree = '')
 {
...      $cattree .= "$title > ";
      get_menu_path($nest_under, $cattree);
...
 }
...
Рейтинг: 0 / 0
24.10.2012, 20:44:33
    #38012152
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод рекурсивной функции
Что-то тут не то. Простенький запрос выполняется на каждом проходе функции. Надеюсь, это всего лишь лабораторная или контрольная, а не реальный сайт...
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / вывод рекурсивной функции / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]