Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > return в рекурсивной функции


Автор: z006 2.7.2012, 02:33
день добрый.долго ломал голову,гуглил,но вразумительного ответа так и не увидел.

имеем ф-цию:
Код

static function get_parent_kat($this_kat,$kat_array)
       {
        $list_result = db_query("SELECT id,name FROM ***** WHERE id=(SELECT p_id FROM ***** WHERE id=".$this_kat.")");
        if (mysql_num_rows($list_result) > 0)
         {
         echo "pfff";
          $list_row=mysql_fetch_array($list_result);
         echo $list_row['id'];
          $kat_array[]=array('id'=>$list_row['id'],'name'=>$list_row['name']);
          centr_page::get_parent_kat($list_row['id'],$kat_array);
         }
        else
         {
          $reversed=array_reverse($kat_array);
          /*
                  $send_back='';
          for ($y=0;$y<count($reversed);$y++)
           {
            $send_back.="<a href='/goods/".$reversed[$y]['id']."' class='def_link_list' style='text-decoration:none;font-weight:bold;'>".$reversed[$y]['name']."</a>→";
           }
          $send_back=substr($send_back,0,strlen($send_back)-7);
          */
          echo "блять!";
          return "345";
          echo "ояебу!";
         }
      }


всё это вызываем так:

Код

$kat_array=array();
$kat_array[]=array('id'=>$kategory,'name'=>$place_row['n1']);
$its=centr_page::get_parent_kat($kategory,$kat_array);
echo $its;


в данном случае получаем на вывод 
Цитата

pfff5###
 потому как в первый вызов $kategory=25,а для него p_id=5,но не выводит "345"!!!
если убрать мои гневные "точки проверки" smile ,и написать нормально
Код

$send_back=substr($send_back,0,strlen($send_back)-7);
return $send_back;

то вообще ничего не выводит,а если написать 
Код

$send_back=substr($send_back,0,strlen($send_back)-7);
echo $send_back;

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

Добавлено @ 02:40
всё,я допер.всё элементарное-простынь))))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)