grav20
Новичок
перевести массив к виду структуры
День добрый, года 2 уже постоянно читаю этот форум и как правило находил все поиском, так что вопросы раньше и не задавал...
Но в этот раз столкнулся с проблемой, которую решить не удается уже пару дней несмотря на кажущуюся простоту.
Есть стуктура каталога, которая хранится в базе, запрос мне возвращает структуру от заданного элемента, см в общем http://dbtree.dklab.ru/search.php?mask=www&depth=4&num=10&count=on (это решение здесь на форуме упоминалось)
получаем массив
Чтобы было наглядно, можно представить эти строки как пути к файлам, см ссылку выше.
Для удобства работы с массивом (чтобы вывести деревом или узнать всех потомков children3) хотелось бы перевести массив к виду струкутры (дерева), например,
Естесственно, первым делом начал делать это через рекурсию
Однако в результате возвращается только последняя ветка, предыдущие ветки затираются, а не добавляются.
Может взгляните свежим взглядом, подскажите ошибку?
День добрый, года 2 уже постоянно читаю этот форум и как правило находил все поиском, так что вопросы раньше и не задавал...

Но в этот раз столкнулся с проблемой, которую решить не удается уже пару дней несмотря на кажущуюся простоту.
Есть стуктура каталога, которая хранится в базе, запрос мне возвращает структуру от заданного элемента, см в общем http://dbtree.dklab.ru/search.php?mask=www&depth=4&num=10&count=on (это решение здесь на форуме упоминалось)
получаем массив
PHP:
array (
array (children, grandchildren, ...) , // и так далее количество чилдренов не ограничено (заранее не известно)
array (children2, grandchildren2, ...),
array (children3, grandchildren2, ...),
array (children2, grandchildren3, ...),
array (children3, grandchildren4, ...),
...
)
Для удобства работы с массивом (чтобы вывести деревом или узнать всех потомков children3) хотелось бы перевести массив к виду струкутры (дерева), например,
PHP:
array
(array
( self,
child(array
( self,
child
),
array
( self,
child
)
)
)
PHP:
function childslist($row, $level) {
$tt['self']['id'] = $row[$level.".id"];
$tt['self']['pid'] = $row[$level.".pid"];
$tt['self']['title'] = $row[$level.".title"];
$tt['self']['path'] = $path;
$tt['self']['shortcut'] = $row[$level.".shortcut"];
$level++;
if ($level<=$this->depth and $row[$level.".id"]>0) $tt['childs']=$this->childslist($row, $level);
$t[$row[($level-1).".id"]]=$tt;
return $t;
}
$output['childs']=childslist($row, $level);
Может взгляните свежим взглядом, подскажите ошибку?