PHP - 创建动态多维文件树数组

Sim*_*mon 6 php filesystems arrays tree multidimensional-array

我想创建一个文件树,为此我需要将文件和目录数组转换为多维文件树数组.例如:

array
(
   'file.txt',
   'dir1/',
   'dir1/dir2/',
   'dir1/dir2/dir3/',
   'dir1/file.txt',
)
Run Code Online (Sandbox Code Playgroud)

array
(
   'file.txt',
   'dir1' => 
   array
   (
       'dir2' => 
       array
       (
           'dir3' =>
           array(),
       ),
       'file.txt',
    )
)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几个函数来完成这个,但是没有它们起作用.我遇到的问题,例如没有简单的方法来转换array ('test','test','test'),'test'$array['test']['test']['test'] = 'test'.

Abr*_*ver 5

这是一个较短的递归:

function dir_tree($dir) {    
    $files = array_map('basename', glob("$dir/*"));
    foreach($files as $file) {
        if(is_dir("$dir/$file")) {
            $return[$file] = dir_tree("$dir/$file");
        } else {
            $return[] = $file;
        }
    }
    return $return;
}
Run Code Online (Sandbox Code Playgroud)