任何人都可以告诉我为什么$ output数组总是只是foreachloop的最后一个$ tmp数组。
我在这里拉毛......
private function create_dir_array($dirs) {
$output = array();
foreach ($dirs as $key => $path) {
$path = split('/',$path);
$tmp = array();
$counter = count($path)-1;
for($i = $counter; $i >= 0; $i--)
{
$tmp = array($path[$i] => $tmp);
}
$output = array_merge($output, $tmp);
}
print("<pre>".print_r($output,true)."</pre>");
}
如果有这个数组
Array
(
[0] => archive/folder1
[1] => archive/folder1/subfolder1
[2] => archive/folder2
.....
)
我希望该数组超出给定的数据 可能有人对此有一个更简单的想法吗?
Array
(
[archive] => Array(
[folder1] => Array(
[subfolder1] => Array()
)
)
[folder2] => Array(
......
)
答案 0 :(得分:1)
因为你在循环中的每次迭代都覆盖它:
for($i = $counter; $i >= 0; $i--)
{
$tmp = array($path[$i] => $tmp);
}
答案 1 :(得分:0)
嗯,它运行得很好,我使用的是array_merge_recursive。 现在对我来说完全符合逻辑。
实际上并没有多少代码。