递归地减少PHP的分层数组

时间:2014-08-12 18:27:53

标签: php arrays recursion

我正在尝试在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"最顶层的经理(而不是几个)。

0 个答案:

没有答案