ФорумПрограммированиеPHP для идиотов → Рекурсия, мать ее

Рекурсия, мать ее

  • Biggless

    Сообщения: 78 Репутация: N Группа: Кто попало

    Spritz Май 8, 2012, 1:22 п.п.

    Заюзал nested sets, возникла проблема с выводом дерева…
    Пример дерева:
    1.
    1.1.
    1.2.
    2.

    Сама функция:

    public static function getTree($tree, $parent_id = 0)
    {
    $result = array();
    foreach ($tree as $key => $node) {
    $res['title'] = $node->title;
    $res['li_attr']['id'] = $node->id;
    if ($node->parent_id == $parent_id) {
    if ($node->has_children())
    $res['children'] = self::getTree($tree, $node->id);
    $result[] = $res;
    }
    }
    return $result;
    }

    Если юзаю как есть - ухожу в глубину дерева и не возвращаюсь назад, т.е. выводятся 1., 1.1., 1.2; 2. не выводится. Если убираю вывод детей - то нормально выводятся оба родителя (1. и 2.).
    Где не прав?
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz Май 8, 2012, 3:38 п.п., спустя 2 часа 15 минут 26 секунд

    Чему равно $tree? Предположу, что дело в передаче объекта
  • Biggless

    Сообщения: 78 Репутация: N Группа: Кто попало

    Spritz Май 9, 2012, 7:58 п.п., спустя 1 день 4 часа 20 минут

    $tree - результат работы кохановского модуля orm-mptt.

    Вообще проблему уже решили отказавшись от множественных корневых узлов.
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz Май 9, 2012, 8:17 п.п., спустя 18 минут 47 секунд

    вся прелесть nested sets в том, что данные выбираются одним запросом.
    ты уверен, что у тебя NS ? parent_id присутствует в adjacency list а не в nested sets
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Май 9, 2012, 9:47 п.п., спустя 1 час 30 минут

    ух надо тоже nested sets заняться будет с множественными корнями %)
    Сапожник без сапог
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz Май 9, 2012, 10:03 п.п., спустя 15 минут 18 секунд


    Вообще проблему уже решили отказавшись от множественных корневых узлов.
    Странно это называть "решением проблемы".
  • LIFF

    Сообщения: 188 Репутация: N Группа: Адекваты

    Spritz Май 11, 2012, 4:43 д.п., спустя 1 день 6 часов 40 минут

    Топик стратер, эт нихуя …. , а если по теме, то в определении функции поставь передачу по ссылке, если пыха > 5.3 то так
    public static function getTree( use $tree, $parent_id = 0) {
    }
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz Май 11, 2012, 9:51 д.п., спустя 5 часов 8 минут


    Топик стратер, эт нихуя …. , а если по теме, то в определении функции поставь передачу по ссылке, если пыха > 5.3 то так
    public static function getTree( use $tree, $parent_id = 0) {
    }
    artoodetoo, уже ответил по существу. Пока ТС не разъяснит ситуацию все другие советы бессмысленны, но ему похоже похуй …
  • Biggless

    Сообщения: 78 Репутация: N Группа: Кто попало

    Spritz Май 11, 2012, 8:21 п.п., спустя 10 часов 30 минут 15 секунд

    похуй …

Пожалуйста, авторизуйтесь, чтобы написать комментарий!