Господа! Спомажите с рекурсией, пожалуйста.

netstuff

Новичок
Господа! Спомажите с рекурсией, пожалуйста.

Есть рекурсивная функция, получающая из БД массив связанных между собой блоков (для последующей трансляции в HTML-таблицу)

PHP:
		public function blocks($report, $block=null, $parent=0, $array=array(), $level=0) {
			$cond = (empty($parent)) ? "id=".$block : "parent=".substr($parent, strpos($parent, constant("IDENTOR"), 1)+1);
			$query = DB::mysql_query("SELECT * FROM ".$this->dbtb." as blocks WHERE ".$cond." AND report=0 OR ".$cond." AND report=".$report." ORDER BY queue ASC");
			if(!is_null($query)) {
				while($result=mysql_fetch_assoc($query)) {
					$name = $this->module.constant("IDENTOR").$result["id"];
					$array[$level][$parent][$name] = $result["title"];
					echo HTMLIB::tag("h1", $result["title"]." (array[".$level."][".$parent."][".$name."])"); print_r($array);
			 		$array = $this->blocks($report, $block, $name, $array, $level+1);
				}
			}
			return $array;
		}
результат выполнения скрипта: http://btl.remar.ru/result.html

в результате, должен получиться массив, где первый элемент соответствует уровню рекурсии (будущие строки), второй содержит указатель на «родительский» элемент, а третий содержит непосредственно данные будущих столбцов.

дебужинг показывает, вроде, все как надо
но на выходе, теряются уровни рекурсии. то есть вместо помещения в $array[$level], происходит своеобразный array_push($array).

где же я туплю???
 

HraKK

Мудак
Команда форума
iceman
Ты не представляешь как ему и всем нам важно что ты не понял.
Не понял - помолчи.
 

MiksIr

miksir@home:~$
Хм, а чем $array[$level] отличается от array_push($array) при $level от 0 до N?
 

netstuff

Новичок
Автор оригинала: MiksIr
Хм, а чем $array[$level] отличается от array_push($array) при $level от 0 до N?
рекурсия проходит последовательно по каждой ветке дерева.
это означает, что array_push будет последовательно складывать элементы в первый уровень.
мне же надо, чтобы при проходе всей ветки и переходе на следующую, уровень обнулялся.
 

MiksIr

miksir@home:~$
Слушай, давай ка структуру массива, который получается и какой нужно.
 

netstuff

Новичок
Автор оригинала: MiksIr
Слушай, давай ка структуру массива, который получается и какой нужно.
вот такой нужен:

PHP:
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [14-2] => Расход продукции по видам при дегустации
                    [14-3] => Расход продукции по видам при ЦВП
                    [14-4] => Количество информационных/дегустационных контактов (человек)
                    [14-5] => Количество результативных контактов (человек). Контролируется по чекам
                )

        )

    [1] => Array
        (
            [14-2] => Array
                (
                    [14-12] => Количество продукции на начало дня
                    [14-13] => Количество продукции в течении дня
                    [14-14] => Количество продукции на конец дня
                )
            [14-3] => Array
                (
                    [14-15] => Количество подарков на начало дня
                    [14-16] => Выдано подарков в течении дня
                    [14-17] => Количество подарков на конец дня
                )
        )

)
а вот такой получаю:

PHP:
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [14-2] => Расход продукции по видам при дегустации
                )

        )

    [1] => Array
        (
            [14-2] => Array
                (
                    [14-12] => Количество продукции на начало дня
                    [14-13] => Количество продукции в течении дня
                    [14-14] => Количество продукции на конец дня
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [14-3] => Расход продукции по видам при ЦВП
                )

        )

    [3] => Array
        (
            [14-3] => Array
                (
                    [14-15] => Количество подарков на начало дня
                    [14-16] => Выдано подарков в течении дня
                    [14-17] => Количество подарков на конец дня
                )

        )

    [4] => Array
        (
            [0] => Array
                (
                    [14-4] => Количество информационных/дегустационных контактов (человек)
                )

        )

    [5] => Array
        (
            [0] => Array
                (
                    [14-5] => Количество результативных контактов (человек). Контролируется по чекам
                )

        )

)
все подправил. теперь мы имеем то, что имеем =/
 
Сверху