数组合并不会在foreach php中工作

时间:2014-10-12 00:54:27

标签: php arrays merge

任何人都可以告诉我为什么$ 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(
         ......
)

2 个答案:

答案 0 :(得分:1)

因为你在循环中的每次迭代都覆盖它:

for($i = $counter; $i >= 0; $i--)
{
    $tmp = array($path[$i] => $tmp);
}

答案 1 :(得分:0)

嗯,它运行得很好,我使用的是array_merge_recursive。 现在对我来说完全符合逻辑。

实际上并没有多少代码。