我的数据库中有一个树形结构,例如员工。
create table "employees" (employee_id, name, manager_id);
当然,manager_id是该员工经理的employee_id(同一张表)。
这可以很容易地转换为数组,代表公司的树结构 (虽然顶部没有1位CEO,但根节点有多个元素)。到目前为止一切都很好。
现在,为了处理注册,我有一个employee_ids数组
$registrations = array(3,7, 10);
我需要在树形结构中显示那些,只显示这些员工的经理(但直到树的顶部)。有没有人有这个算法?我设法将它们添加到树中,但是当2个人共享1个管理员时,没有设法将不同的分支放在一起。
假设员工3和10(上面的CFR)与ID为15的员工分享相同的经理,员工7的经理ID为23,其中两位经理向ID为33的同一位经理报告,后者报告为45:I我需要一个数组
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,但我怎么做a)发现它需要被添加到树中,并且b)在正确的位置将它添加到树上?任何人
答案 0 :(得分:-1)
我的意见是你选择了错误的方法将树数据存储到数据库中。
如果您想将树数据存储到数据库中,则必须使用Modified Preorder Tree Traversal。
有关在数据库中存储树的这种方式的更多信息,请访问:http://www.sitepoint.com/hierarchical-data-database/
使用此算法,您可以按照自己喜欢的顺序管理数据,并轻松提取自己喜欢的任何信息!