Коллеги, помогите пожалуйста с PHP, я не догоняю как правильно

сделать - вероятно я неправильно пытаюсь использовать ссылки. Задача смоделировать в памяти дерево из набора последовательных данных, данные я получаю в цикле foreach(), дерево я завожу снаружи цикла
$tree = new stdClass(); $tree->a = null; $tree->b = null; $next = & $tree->a;
внутри цикла я завожу новую ветку и пытаюсь присвоить её ссылке $next
$newTree = new stdClass();$next = & $newTree;
и переключить ссылку $next на текущую ветку для следующей итерации:
unset($next); $next = & $newTree;
Но дерево получается пустое, что я делаю не так?

16 ответов

56 просмотров

В первую очередь изобретаешь какой-то велосипед, вместо того чтобы выбрать вариант дерева (parent_id / nested-set) и скачать подходящий модуль.

Sergey- Автор вопроса
Алексей Ильин
В первую очередь изобретаешь какой-то велосипед, в...

Мне на выходе надо получить определённый 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 перестраивать дерево при переносе ветвей графа?

Gena Voituk
Хех и как ты будешь с parent_id, вытаскивать, допу...

Инструмент выбирается под задачу и для 20 уровней с необходимостью их строить я не буду выбирать схему с parent. С движением веток в нестед не понятно, удалил из одной, вставил в другую, в чем проблема

Алексей Ильин
Инструмент выбирается под задачу и для 20 уровней ...

Насколько я помню, в nested set записываетсч право и лево. И эти значения записываются при полном переборе дерева. Большая структура - огромные вычесления каждый раз. Подобный паттерн для хранения иерархии пользователей не подойдет

Gena Voituk
Насколько я помню, в nested set записываетсч право...

Так ты их меняешь не перебором, а одним update right+1 where right > current

Сейчас перечитал на вики и убедился. Обновление узла требует перенумерации дерева и поэтому является дорогостоящим. Твой подход не взлетит. При таком паттерне при смене позиции ноды надо пересчитывать все дерево. Ровно как и при добавлении новой ноды.

Gena Voituk
Сейчас перечитал на вики и убедился. Обновление уз...

Твоя ошибка в том, что ты пинаешь какого-то вакуумного коня, а я для этого могу подключить json филд или вообще монгу

Алексей Ильин
Твоя ошибка в том, что ты пинаешь какого-то вакуум...

Разговор начался с хранения иерархических структур в реляционных бд. Понятно, что nosql бд для этого ужобнен

Gena Voituk
Разговор начался с хранения иерархических структур...

Разговор начался с изобретения какой-то хрени, а я намекнул, что неплохо бы не решение свое проталкивать, а хотя бы условие задачи озвучить

Gena Voituk
Разговор начался с хранения иерархических структур...

Может тогда стоит упомянуть, что есть графовые СУБД

Алексей Ильин
В первую очередь изобретаешь какой-то велосипед, в...

Ааа нашел, ну ты кстати тоже начал, с "изобретаешь велосипед", это может его тестовое на собесе?:)

Nikolay Churkin
Ааа нашел, ну ты кстати тоже начал, с "изобретаешь...

Вообще, на собесе я бы задал контрвопрос "а нахрена это городить, скажи задачу, я тебе подходящее решение предложу" и нормальный техлид бы это оценил выше потуг соорудить что-то со ссылками.

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
2
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
кто-нибудь уже пробовал это?
Lencore
4
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
❓ Подскажите как сделать в группе телеги функцию (кнопку) пересылки сообщения где есть нарушение правил? Бот к каждому сообщению (по определенным ключам) добавляет снизу кнопк...
Alexander
4
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Карта сайта