【发布时间】:2019-05-27 12:32:28
【问题描述】:
我有一个包含命名空间信息的数组:
$array = [
['App', 'Classes', 'Auth'],
['App', 'Classes', 'Auth'],
['App', 'Classes', 'Middleware'],
['App', 'Classes', 'Phone'],
['App', 'Classes', 'Auth'],
['App', 'Mail'],
['App', 'Mail', 'Sender'],
['App', 'Box'],
];
现在我想构建一个单独的数组或对象,它应该以一种简单的方式显示命名空间信息:
$result = [
['App' =>
['Classes' =>
[
'Auth',
'Middleware',
'Phone',
]
],
['Mail' =>
['Sender']
],
['Box'] => []
]
]
我尝试了一些递归函数,但我得到的只是一个平面数组......
private function createNamespaceHirachy( $namespaces ) {
foreach ($namespaces as $index => $namespace) {
$namespaces[$namespace] = [];
$namespaces[$namespace] = $this->createNamespaceHirachy($namespaces[$namespace]);
}
return $namespaces;
}
抱歉,这可能要简单得多,但我脑子坏了:-/
【问题讨论】:
-
向我们展示您尝试过的递归函数。
-
请向我们展示您的尝试(以及确切的结果),并解释您的推理。
-
这可能会对您有所帮助:stackoverflow.com/questions/56135624/…
-
你根本不需要使用递归。
-
所以这永远不能深入四层?