powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / вывод рекурсивной функции
5 сообщений из 5, страница 1 из 1
вывод рекурсивной функции
    #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
вывод рекурсивной функции
    #38009327
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kiril.tll,

static $cattree;

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

Да, про static я знал, но клинило меня день. Спасибо, работы то на 5 минут!
...
Рейтинг: 0 / 0
вывод рекурсивной функции
    #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
вывод рекурсивной функции
    #38012152
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то тут не то. Простенький запрос выполняется на каждом проходе функции. Надеюсь, это всего лишь лабораторная или контрольная, а не реальный сайт...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / вывод рекурсивной функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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