Возвращение результата из ф-ции

Bosha

Новичок
Возвращение результата из ф-ции

День добрый.
Есть у меня ф-ция:
PHP:
function GetRubr($id, $status){
global $lang; global $db; static $up;
$result = mysql_query("select id, name_".$lang.", parent_id from rubrikator1 where id='$id'") or die(mysql_error());

	if ($status=="1"){
		if(mysql_num_rows($result)!='0'){
		$row = mysql_fetch_assoc($result);
		$up[] = $row;
		$this->GetRubr($row[parent_id], 1);
		}
		else{ return $up; }
	}
}
Обращаюсь к ф-ции так
PHP:
$up = $com->GetRubr($id, 1);
Проблема в том, что в вызывающем сценарии $up не существует. var_dump[$up]=null
Хотя в функции массив существует. else{ print_r($up); return $up; } в последней строке
выводит этот массив, а вот после return он пропадает. Подскажите плиз.
 

valager

Guest
не нужно делать static $up во первых,
а во вторых, массив $up в функции желательно объявить: $up=new array()
 

Bosha

Новичок
Как мне тут подсказали, что возможно значение не возвращается поскольку его нечему возвращать.
$this->GetRubr($row[parent_id], 1); рекурсия.

Если это так, тогда вопрос как вывести значение из такой рекурсивной ф-ции?
 

valager

Guest
еще нужно писать: $up=$this->GetRubr($row[parent_id],1)
 

Bosha

Новичок
Автор оригинала: valager
не нужно делать static $up во первых,
а во вторых, массив $up в функции желательно объявить: $up=new array()
Если не делать static то как мне сохранить результат предыдущего вызова ф-ции.

-~{}~ 03.08.04 17:03:

Ладно. Плюнул я на это дело и избавился от рекурсии. Может кому полезно будет
вот так:

PHP:
if ($status=="1"){
		$flag=$id;
		while($flag>"0"){
		$result = mysql_query("select id, name_".$lang.", parent_id from rubrikator1 where id='$flag'") or die(mysql_error());
		$row = mysql_fetch_assoc($result);
		$up[] = $row;
		$flag = $row[parent_id];
		}
		return $up;
		}
 
Сверху