Я пытаюсь сортировать массив, чтобы гарантировать, что родительский элемент какого-либо элемента всегда существует до него в массиве. Например:
Array
(
[0] => Array
(
[0] => 207306
[1] => Bob
[2] =>
)
[1] => Array
(
[0] => 199730
[1] => Sam
[2] => 199714
)
[2] => Array
(
[0] => 199728
[1] => Simon
[2] => 207306
)
[3] => Array
(
[0] => 199714
[1] => John
[2] => 207306
)
[4] => Array
(
[0] => 199716
[1] => Tom
[2] => 199718
)
[5] => Array
(
[0] => 199718
[1] => Phillip
[2] => 207306
)
[6] => Array
(
[0] => 199720
[1] => James
[2] => 207306
)
)
В вышеприведенном массиве это "не удается", поскольку [1] [2] (Sam) еще не существует и не работает [4] [2] (Tom).
Правильный вывод был бы таким же, как и в этом случае, поскольку оба родителя Sam и Tom уже существуют до того, как они появятся в массиве:
Array
(
[0] => Array
(
[0] => 207306
[1] => Bob
[2] =>
)
[1] => Array
(
[0] => 199714
[1] => John
[2] => 207306
)
[2] => Array
(
[0] => 199730
[1] => Sam
[2] => 199714
)
[3] => Array
(
[0] => 199728
[1] => Simon
[2] => 207306
)
[4] => Array
(
[0] => 199718
[1] => Phillip
[2] => 207306
)
[5] => Array
(
[0] => 199716
[1] => Tom
[2] => 199718
)
[6] => Array
(
[0] => 199720
[1] => James
[2] => 207306
)
)
Я нашел ответ qaru.site/info/503428/..., который был очень близок, но он, кажется, только на одном уровне (т.е. есть только один родитель), тогда как в моем случае в иерархии может быть 1 или 10 уровней.
Как отсортировать массив так, чтобы значение не могло появиться, если его родительский объект уже существует до него?