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

标签 php arrays multidimensional-array tree filesystems

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

array
(
   'file.txt',
   'dir1/',
   'dir1/dir2/',
   'dir1/dir2/dir3/',
   'dir1/file.txt',
)

array
(
   'file.txt',
   'dir1' => 
   array
   (
       'dir2' => 
       array
       (
           'dir3' =>
           array(),
       ),
       'file.txt',
    )
)

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

最佳答案

这是一个较短的递归:

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;
}

关于PHP - 创建动态多维文件树数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19573131/

相关文章:

javascript - 数组引用以某种方式转换为值

java - 将数组分割成不同大小的 block

php - 使数组在多维数组php codeigniter中唯一

php - php 上的双重 URL 错误

php - 创建登录和注销 session

php - 无法与位于 ws ://localhost:8000/socket/server/startDaemon. php 的服务器建立连接。 var socket = new WebSocket(主机);

c - 结构中的零长度数组有何用处?

javascript - 如何修复函数以获取单元格的文本颜色

java - 另一个数组中的数组有什么缺点?

php - 使用 PHP 进行时间或时间间隔转换