PHP дерево снизу вверх - PullRequest
       1

PHP дерево снизу вверх

0 голосов
/ 20 октября 2011

В моей базе данных есть древовидная структура, например, для сотрудников.

 create table "employees" (employee_id, name, manager_id);

где, конечно, manager_id - это employee_id (та же таблица) с менеджером этого сотрудника.

Это может быть легко преобразовано в массив, представляющий древовидную структуру компании (хотя наверху нет 1 CEO, корневой узел имеет несколько элементов). Пока все хорошо.

Теперь для обработки регистраций у меня есть массив employee_ids

 $registrations = array(3,7, 10);

Мне нужно было бы показать тех в древовидной структуре, где показаны только менеджеры этих сотрудников (но до самой верхушки дерева). У кого-нибудь есть алгоритм для этого? Мне удалось добавить их в дерево, но не удалось соединить разные ветви, когда 2 человека делят одного менеджера.

Скажем, сотрудник 3 и 10 (см. Выше) делят одного и того же менеджера с ID 15, а у сотрудника 7 есть менеджер с ID 23, где оба менеджера отчитываются перед одним и тем же менеджером с ID 33, который в свою очередь сообщает 45: нужен массив

array('45'=>array('33'=>array('23'=>array(7), '15'=>array(3,10))));

Мне удается построить эту структуру, например, начиная с сотрудника 3, я получаю

array('45'=>array('33'=>array('15'=>array(3))));

и пока я работаю с 7, мне удается построить филиал

array(23->array(7))

но как мне теперь объединить этот новый массив с уже существующим ...? Я знаю, что менеджеру 23 лет - 33, но как мне а) найти, что его нужно добавить в дерево, и б) добавить его в дерево в правильном месте ??? кто-нибудь?

1 Ответ

0 голосов
/ 20 октября 2011

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

Если вы хотите сохранить древовидные данные в своей базе данных, вы должны использовать Modified Preorder Tree Traversal.

Более подробную информацию об этом способе хранения деревьев в базе данных вы можете найти здесь: http://www.sitepoint.com/hierarchical-data-database/

С помощью этого алгоритма вы можете управлять своими данными в любом порядке и легко извлекать любую информацию!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...