路径的树状结构

时间:2013-12-26 22:31:17

标签: php loops tree

我有一个树状的结构化数组:

Array
(
    [dir1] => Array
    (
        [file1] => ...
        [dir2] => Array
            (
               [file1] => ...
               [file2] => ...

        )

    )
)

我想获得一个路径名数组:

Array
(
    [file1] => ....
    [dir2/file1] => ....
    [dir2/file2] => ....
)

我怎么能这样做?我尝试过很多错误的循环和递归函数,但我仍然不知道该怎么做。

1 个答案:

答案 0 :(得分:2)

一个简单的递归解决方案是:

function toPathArray($nestedArr) {
    $res = array();
    foreach ($nestedArr as $key => $val) {
        if (is_array($val)) {
            foreach (toPathArray($val) as $innerKey => $innerVal) {
                $res["$key/$innerKey"] = $innerVal;
            }
        } else {
            $res[$key] = $val;
        }
    }
    return $res;
}

另见: