在 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 中将文件名列表转换为文件树? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章