在 PHP 中将文件名列表转换为文件树? [关闭]

Posted

技术标签:

【中文标题】在 PHP 中将文件名列表转换为文件树? [关闭]【英文标题】:Convert a list of filenames to filetree in PHP? [closed] 【发布时间】:2014-07-02 11:09:30 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

如果你有这样的数组:

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

【讨论】:

以上是关于在 PHP 中将文件名列表转换为文件树? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 javascript 中将 Blob 转换为文件列表

在 C# 中将通用列表转换为数据集 [关闭]

如何在Java中将FTP文件列表转换为文件列表? [重复]

如何在php中将文件转换为zip

在PHP中将EXCEL文件转换为CSV文件[重复]

在python中将字符串转换为数字[关闭]