gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:18:57 25 4
gpt4 key购买 nike

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

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com