我需要对数组进行重新排序,以便在父项之前加载所有slug,但前提是父项具有与slug值完全匹配的值。
例如,拿这个数组:
Array (
[0] => Array (
[parent] => information_desk_3
[slug] => about_dream_portal_1
)
[1] => Array (
[parent] => forum
[slug] => information_desk_3
)
[2] => Array (
[parent] => about_dream_portal_1
[slug] => testing_2
)
[3] => Array (
[parent] => testing_2
[slug] => information_desk_4
)
)
我需要它以便按如下方式排序:
Array (
[0] => Array (
[parent] => forum
[slug] => information_desk_3
)
[1] => Array (
[parent] => information_desk_3
[slug] => about_dream_portal_1
)
[2] => Array (
[parent] => about_dream_portal_1
[slug] => testing_2
)
[3] => Array (
[parent] => testing_2
[slug] => information_desk_4
)
)
但问题是,它需要搜索所有slu and并对它们进行重新排序,以便slu the在阵列中排在第一位,然后才能与那些slug的值相匹配。请有人帮助我,我已经好几个小时了,但现在无济于事。
答案 0 :(得分:1)
听起来你真正拥有的是图形,并且你想要节点的部分排序。这意味着您可以使用标准图算法解决问题。
如果您构建一个项目树,其中每个父项都知道其所有子项,那么您可以对树进行广度优先遍历以构建部分排序的输出。
在你的例子中,这是一个非常简单的图表:
forum -> information_desk_3 -> about_dream_portal_1 -> testing_2 -> information_desk_4
如果你从forum
开始并沿着树向下走,那么在你去的时候将节点添加到输出列表中,那么你将得到正确的顺序。
如果你有多个不相交的树,那么它会变得有点棘手,但仍然不应该太难。您只需确定哪些节点是根节点,然后依次遍历每个树。