Автор Тема: Возврат из функции  (Прочитано 3436 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Kita

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kitenok.com
Возврат из функции
« : 25 Сентября 2003, 20:08:07 »
Привет.
Может кто поможет, как получить значение из функции. Делаю так:

$menu="";

$f=menu($llevel, $first_menu, $a, $maxlev, $menu);

echo "$f";

function menu($level, $id_menu, $a, $maxlev, $menu)
   {
    $sql1_1="SELECT * FROM menu WHERE level=$level AND id_menu=$id_menu ORDER BY position";
    $sql1_2=mysql_query($sql1_1);

     $width=$level*10;
     while ($sql1_3=mysql_fetch_array($sql1_2))
      {
          $menu=$menu."
 $sql1_3[name]
";
        $id_menu=$sql1_3[\'id\'];
        if ( (!empty($a[$level])) and ($a[$level]==$id_menu) and ($level<=$maxlev) )
           {
           $f=menu($level+1, $id_menu, $a, $maxlev, $menu);
           }
        }
     $level++;

return $menu;

     }


Но возвращает оно мне только первое значение, а не то значение, которое в результате работы всей функциии.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Возврат из функции
« Ответ #1 : 25 Сентября 2003, 20:19:25 »
1. помести свой код в [ php] твой код [ /php]
2. в чем смысл строк:
$level++;
и
if ( (!empty($a[$level])) and ($a[$level]==$id_menu) and ($level<=$maxlev) )
{
$f=menu($level+1$id_menu$a$maxlev$menu);
}

насчет последнего кода я не понял, почему $f нигде не используется ?
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Kita

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kitenok.com
Возврат из функции
« Ответ #2 : 25 Сентября 2003, 20:39:13 »
$f используется потом
проблема вот в чем:

при использовании return функция прекращает выполнение. а в ней задано, что она далжна несколько раз выполнить саму себя...

как обойти проблему - не знаю...

$level - уровень меню

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Возврат из функции
« Ответ #3 : 25 Сентября 2003, 21:53:18 »
Kita
ты знаком с понятием "область видимости переменных" ?
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Возврат из функции
« Ответ #4 : 26 Сентября 2003, 13:22:09 »

Оффлайн Kita

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kitenok.com
Возврат из функции
« Ответ #5 : 26 Сентября 2003, 13:35:21 »
Ок, спасибо... Об этом я как-то не подумала

Оффлайн tarya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 370
  • +0/-0
  • 0
    • Просмотр профиля
Возврат из функции
« Ответ #6 : 26 Сентября 2003, 23:52:33 »
Я для позора могу сказать одно что я вообще неразобрался с этими возвратами функции, и их неиспользую взагали. В книгах так умно пишут всегда что и понячть неполучается. Может вы мне на нормальном языке скажите что там папа в маму и вообще как это все происходит с возвратами функций.


Спасибо
Рожденный с понимающим, и гордо поднятым кулаком! Свидетель разреза запястья — он с ним!

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Возврат из функции
« Ответ #7 : 27 Сентября 2003, 12:24:01 »
tarya
возможно, если ты четко сформулируешь свой вопрос, то кто-нибудь и ответит.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28