Champion пишет:А стоп, так так дерево уже есть и нужно просто его обойти и вывести путь от корня до низу?
Не совсем верно, иначе бы это упростило задачу
![Улыбка Улыбка](./im/emoticons/smile24.gif)
, пример моей функции вывода дерева можно под спойлером посмотреть. Мне нужно не только пройтись от верхнего уровня до нижнего, но и вернуться опять к верхнему в дереве... Нужно учесть $level = 0; затем его плюсовать или минусовать - вроде как всё понятно, но вверх его поднимаю без проблем, а спустить обратно (к главным категориям) не получается - категории замещают друг друга. Наделал кучу разных вариантов и не работает, как должно, вот и приходится пока не по дереву бегать, а еще доп. массивы для выборки путей, чтоб потом в дереве реплейсом поменять имя категории на готовый путь.
Но пришла идея не создавать еще один мега-массив для обработки путей, а ... Сейчас думаю так попробоввать: Если опускаемся на уровень вниз (каунтом уровни не получится подсчитать - подсчитывается только то, что на уровень ниже, а это не то), то создаём массив путей, типа:
# В самом начале: $path[0] = "$domain/";
# Затем в дереве при переходе в глубь...
$lvl++;
$path[$lvl] = $path[$lvl-1].'/';
...
и так по нарастающей от уровня...
+ текущая директория = полный путь.
Примерчик чертовски простенький и интересненький... сейчас попробую по этой схемке покрутить массив, спасибо. В принципе, если бегать несколько раз по двумерному массиву, то даже и дерево тогда не нужно, зря строил, а сразу вытащить всё одним махом получится Я поначалу так и начал, но столкнулся с проблемкой как мне массив перестроить после удаления пустых элементов ансетом, чтоб сотню категорий постоянно не пересчитывать, а: 100, 99, 98 ... (иначе коунт($арр) их тоже считает) - не смог поначалу и решил, что проще будет еще мега-массив сделать, но так только еще больше нагромоздил скриптов
Возьму-ка я денек еще, через день-два отпишусь как и что сделал, пока нужно еще самому попробовать покрутить это, теперь больше вник в суть деревьев. Эх, век живи - век учись
Цитата:Но как я понял, ты сначала это дерево сформировал из простого массива pid-id-info? Этого не обязательно делать.
Верно, сначала массив взял типа
$cats[$id][$pid][$link];
, отсортировал, почистил и т.д., а из него уже получил дерево. При этом $info (т.е. $link) = "<ul><li><img scr="icon"><a href="/catname/">text</a></li></ul>" вот в таком приметиве выглядит, он в разы больше, а это для примера.
затем уже в процессе прегами и реплейсами меняю href на полный путь.
Спасибо, вроде понятней стало, разобрался, теперь нужно попробовать вживую наклепать.