В моей базе данных есть древовидная структура, например, для сотрудников.
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, но как мне а) найти, что его нужно добавить в дерево, и б) добавить его в дерево в правильном месте ??? кто-нибудь?