netstuff
Новичок
Господа! Спомажите с рекурсией, пожалуйста.
Есть рекурсивная функция, получающая из БД массив связанных между собой блоков (для последующей трансляции в HTML-таблицу)
результат выполнения скрипта: http://btl.remar.ru/result.html
в результате, должен получиться массив, где первый элемент соответствует уровню рекурсии (будущие строки), второй содержит указатель на «родительский» элемент, а третий содержит непосредственно данные будущих столбцов.
дебужинг показывает, вроде, все как надо
но на выходе, теряются уровни рекурсии. то есть вместо помещения в $array[$level], происходит своеобразный array_push($array).
где же я туплю???
Есть рекурсивная функция, получающая из БД массив связанных между собой блоков (для последующей трансляции в 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;
}
в результате, должен получиться массив, где первый элемент соответствует уровню рекурсии (будущие строки), второй содержит указатель на «родительский» элемент, а третий содержит непосредственно данные будущих столбцов.
дебужинг показывает, вроде, все как надо
но на выходе, теряются уровни рекурсии. то есть вместо помещения в $array[$level], происходит своеобразный array_push($array).
где же я туплю???