javascript - 在 PHP 中将文件名列表转换为文件树?

标签 javascript php jquery filetree

是否有任何库或插件可以用来轻松将文件名列表转换为文件树?

例如,我有一个数组,其中包含我从文本中读取的文件名列表:

C\Folder1\Flower.jpg
C\Folder1\Monkey.jpg
C\Folder1\Hello.jpg
C\Folder2\Binkie.txt
C\Folder2\Spike.png
C\Folder3\Django.jpg
C\Folder3\Tessje.tiff

如何在文件树中显示上面的文件名列表?我见过的大多数文件树插件要么需要真实的文件和文件夹结构,要么非常难以理解。

最佳答案

如果你有这样的数组:

array(
    'c' => array(
        'Folder1' => array(
            'Flower.jpg',
            'Monkey.jpg',
            ...
        ),
        'Folder2' => array(
            'Binkie.txt',
            ...
        ),
    ),
),

您可以使用递归函数:

<?php

$arr = array(
    'c' => array(
        'Folder1' => array(
            'Flower.jpg',
            'Monkey.jpg',
            //...
        ),
        'Folder2' => array(
            'Binkie.txt',
            //...
        ),
    ),
);

function drawTree($container, $nesting = 0)
{
    foreach ($container as $folder => $sub) {
        if (is_array($sub)) {
            echo str_repeat('.', $nesting) . $folder . '<br>';

            drawTree($sub, $nesting + 1);
        } else {
            echo str_repeat('.', $nesting) . $sub . '<br>';
        }
    }
}

drawTree($arr);

要将路径转换为数组树,请使用:

$arr = array(
    'C/Folder1/Flower.jpg',
    'C/Folder1/Monkey.jpg',
    'C/Folder1/Hello.jpg',
    'C/Folder2/Binkie.txt',
    'C/Folder2/Spike.png',
    'C/Folder3/Django.jpg',
    'C/Folder3/Tessje.tiff',
);

$result = array();

foreach ($arr as $file) {
    $exp = explode('/', $file);
    $curr = &$result;

    while (true) {
        $chunk = array_shift($exp);

        if (empty($exp)) {
            $curr[] = $chunk;
            break;
        }

        if (!isset($curr[$chunk])) {
            $curr[$chunk] = array();
        }
        $curr = &$curr[$chunk];
    }
}

var_dump($result);

关于javascript - 在 PHP 中将文件名列表转换为文件树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24529591/

相关文章:

javascript - 单击链接时关闭菜单

javascript - 如何进行连续的 HTTP 调用?

php - 根据文件夹中已存在的名称创建文件

javascript - 管理页面在 orgfree 中不起作用 用户 'root' @'localhost' 的访问被拒绝?

javascript - 调整文本框大小以保持在背景图片内

javascript - 将整个 html 文档显示到框架中

javascript - Chrome Commands API 使默认弹出窗口可见

php - CSRF token 不匹配 |拉维尔 5.4

javascript - 带有 AJAX 和 DOM 处理 API 的下拉菜单

javascript - 在谷歌搜索结果中附加文本