сделать - вероятно я неправильно пытаюсь использовать ссылки. Задача смоделировать в памяти дерево из набора последовательных данных, данные я получаю в цикле foreach(), дерево я завожу снаружи цикла
$tree = new stdClass(); $tree->a = null; $tree->b = null; $next = & $tree->a;
внутри цикла я завожу новую ветку и пытаюсь присвоить её ссылке $next
$newTree = new stdClass();$next = & $newTree;
и переключить ссылку $next на текущую ветку для следующей итерации:
unset($next); $next = & $newTree;
Но дерево получается пустое, что я делаю не так?
В первую очередь изобретаешь какой-то велосипед, вместо того чтобы выбрать вариант дерева (parent_id / nested-set) и скачать подходящий модуль.
Мне на выходе надо получить определённый json, по этому связь через id не подходит { "blocks": { "languageVersion": 0,"blocks": [ { "type": "startBlock","deletable": false, "next": { "block": { "type": "SupportApp", "fields": { "SupportName": "7_03833", "SupportTimeout": 20 } } } } ] } }
Хех и как ты будешь с parent_id, вытаскивать, допустим, 20 уровней родителей ноды? Или как ты будешь с nested set перестраивать дерево при переносе ветвей графа?
Инструмент выбирается под задачу и для 20 уровней с необходимостью их строить я не буду выбирать схему с parent. С движением веток в нестед не понятно, удалил из одной, вставил в другую, в чем проблема
Насколько я помню, в nested set записываетсч право и лево. И эти значения записываются при полном переборе дерева. Большая структура - огромные вычесления каждый раз. Подобный паттерн для хранения иерархии пользователей не подойдет
Так ты их меняешь не перебором, а одним update right+1 where right > current
Сейчас перечитал на вики и убедился. Обновление узла требует перенумерации дерева и поэтому является дорогостоящим. Твой подход не взлетит. При таком паттерне при смене позиции ноды надо пересчитывать все дерево. Ровно как и при добавлении новой ноды.
Твоя ошибка в том, что ты пинаешь какого-то вакуумного коня, а я для этого могу подключить json филд или вообще монгу
Разговор начался с хранения иерархических структур в реляционных бд. Понятно, что nosql бд для этого ужобнен
Разговор начался с изобретения какой-то хрени, а я намекнул, что неплохо бы не решение свое проталкивать, а хотя бы условие задачи озвучить
Может тогда стоит упомянуть, что есть графовые СУБД
Ааа нашел, ну ты кстати тоже начал, с "изобретаешь велосипед", это может его тестовое на собесе?:)
Вообще, на собесе я бы задал контрвопрос "а нахрена это городить, скажи задачу, я тебе подходящее решение предложу" и нормальный техлид бы это оценил выше потуг соорудить что-то со ссылками.
Ой, без этого давай:) Герои на собесах:)
Обсуждают сегодня