PHP 更改父子关系的数组顺序


PHP Change Array Order for Parent-Child Relation

当前数组结构:

Array
(
    [0] => Array
        (
            [TASK_ID] => 2
            [PARENT_TASKID] => 0
            [TASK_LEVEL] => 0
        )
    [1] => Array
        (
            [TASK_ID] => 1
            [PARENT_TASKID] => 0
            [TASK_LEVEL] => 0
        )
    [2] => Array
        (
            [TASK_ID] => 4
            [PARENT_TASKID] => 1
            [TASK_LEVEL] => 1
        )
    [3] => Array
        (
            [TASK_ID] => 5
            [PARENT_TASKID] => 1
            [TASK_LEVEL] => 1
        )
    [4] => Array
        (
            [TASK_ID] => 6
            [PARENT_TASKID] => 5
            [TASK_LEVEL] => 2
        )
    [5] => Array
        (
            [TASK_ID] => 9
            [PARENT_TASKID] => 2
            [TASK_LEVEL] => 1
        )
    [6] => Array
        (
            [TASK_ID] => 10
            [PARENT_TASKID] => 2
            [TASK_LEVEL] => 1
        )
)

您可以观察到PARENT_TASKID对儿童来说是TASK_ID。例如:

Array
        (
            [TASK_ID] => 9
            [PARENT_TASKID] => 2
        )

在这里TASK_ID = 9TASK_ID = 2的孩子.请注意PARENT_TASKID

Array (
            [TASK_ID] => 2
            [PARENT_TASKID] => 0
            [TASK_LEVEL] => 0
        )

如何更改上述数组格式,使子数组位于其父数组下,如下所示:

[0] => Array
    (
        [TASK_ID] => 2
        [PARENT_TASKID] => 0
        [TASK_LEVEL] => 0
    )
[1] => Array
    (
        [TASK_ID] => 9
        [PARENT_TASKID] => 2
        [TASK_LEVEL] => 1
    )
[2] => Array
    (
        [TASK_ID] => 10
        [PARENT_TASKID] => 2
        [TASK_LEVEL] => 1
    )

我不知道将孩子完全放在父母之下,而是相应地更改数组顺序。

你想要

的称为拓扑排序。您可以在此处找到有关如何解决此问题的一些信息 http://en.wikipedia.org/wiki/Topological_sorting