我正在尝试在PHP中重组数组以正确表示管理层次结构。
我有一个多维的员工ID数组,其中键是员工ID,值可以是整数(与密钥相同,如果他们不管理任何人)或者员工管理的ID数组
示例数据:
[10] => Array ( [2] => 2 [37] => 37 [64] => 64 ) [4] => Array ( [3] => 3 [5] => 5 [7] => 7 [22] => 22 ) [5] => Array ( [4] => 4 [62] => 62 [74] => 74 ) [35] => Array ( [6] => 6 [34] => 34 [10] => 10 )
员工10管理员工2,37和64.员工35管理6,34和10。
如果员工管理另一位经理,子经理将移动并嵌套在父经理下(请参阅员工10在下面所需的输出中移动到员工35)。
您会注意到员工4和5互相管理,因此两者都不会成为孩子/父母。这是我无法理解的棘手部分。
期望输出:
[4] => Array ( [3] => 3 [5] => 5 [7] => 7 [22] => 22 ) [5] => Array ( [4] => 4 [62] => 62 [74] => 74 ) [35] => Array ( [6] => 6 [34] => 34 [10] => Array ( [2] => 2 [37] => 37 [64] => 64 )
如果员工2管理员工8和9(不在示例数据中),则元素35的所需输出如下:
[35] => Array ( [6] => 6 [34] => 34 [10] => Array ( [2] => Array ( [8] => 8 [9] => 9 ) [37] => 37 [64] => 64 )
换句话说,这需要递归地查找和配对管理器ID。
有没有人对如何完成这种排序有任何想法,因为有些经理可以相互管理?
编辑:员工只能拥有一名经理。此外,没有单一的" root"最顶层的经理(而不是几个)。