【发布时间】:2018-07-10 12:12:42
【问题描述】:
我已经看到了很多关于这个主题的问题,但没有任何接近我的案例。
我喜欢一个非常简单的文件夹路径作为键,并希望将数组变成多维数组。
我当前的数组
[
'projects' => 'A path',
'projects/project-a' => 'Another path',
'projects/project-b' => 'Yet another path',
'about/me/and/someone/else' => 'Path about me'
]
这是我尝试得到的结果:
[
'projects' => [
'path' => 'A path',
'children' => [
'project-a' => [
'path' => 'Another path'
],
'project-b' => [
'path' => 'Yet another path'
]
]
],
'about' => [
'children' => [
'me' => [
'children' => [
'and' => [
'children' => [
'someone' => [
'children' => [
'else' => [
'path' => 'Path about me'
]
]
]
]
]
]
]
]
]
]
也许我可以以某种方式使用array_walk_recursive。我知道explode 可以用来分割/ 的部分。
备注
-
projects/project-a没有孩子。 -
about和除了最后一个之外的所有孩子都没有路径。 - 阵列的深度未知。
【问题讨论】:
-
先尝试自己,如果做不到,请提出问题并展示您的尝试。
-
是的,您可以通过一些调整来使用爆炸。正如@KIKOSoftware 所说,您需要自己尝试一下
-
这很容易解决。从我的头顶来看,最快的方法是使用嵌套的 foreach 和
explode遍历每个的根。如果您正在索引互联网,您可能需要对访问的路径进行哈希处理,并可能尝试找到它们 O(1) 并从那里构建。由于您的列表已排序,这似乎微不足道。
标签: php arrays recursion multidimensional-array explode