gpt4 book ai didi

php - 从php中的完整路径创建文件树

转载 作者:行者123 更新时间:2023-12-05 09:23:10 26 4
gpt4 key购买 nike

我正在尝试从完整路径字符串创建某种文件树。

这是我使用的 php 类给我的:

/RootFolder/Folder1/File1.doc
/RootFolder/Folder1/SubFolder1/File1.txt
/RootFolder/Folder2/SubFolder1/File2.txt
/RootFolder/Folder2/SubFolder1/SubSubFolder1/File4.doc

我想我可以做一个像这样的数组:

array 
(
"RootFolder" => array
("Folder1" => array
("FILE" => "File1.doc"
"SubFolder1" => "File1.txt"
"SubFolder1" => "File2.txt"
)
"Folder2" => array
(
...
)
)
)

最终用 <li> 得到这个结果或者在 <table> :

RootFolder/
|_ Folder1/
| |_ SubFolder1/
| | |_ File1.txt
| | |_ File2.txt
| |_ File1.doc
|
|_ Folder2/
|_ SubFolder1/
|_ SubSubFolder1/
|_ File2.txt

我坚持这个是因为我有点困惑,当然我不是开发人员..

是否有其他方法可以做到这一点?我想我将有大约 >10 000 个文件字符串在加载页面时继续。

编辑:

事实上,我有一个 php 对象返回我这样的数组:

Array
(
[0] => Transmission\Model\File Object
(
[name:protected] => RootFolder/Folder1/File1.jpg
[size:protected] => 13324
[completed:protected] => 13324
[client:protected] =>
)

[1] => Transmission\Model\File Object
(
[name:protected] => RootFolder/Folder1/File2.mp3
[size:protected] => 10383488
[completed:protected] => 10383488
[client:protected] =>
)
[2] ...
)

我想做的是用当前文件的名称、大小和状态制作某种文件树表。我是基于这个 http://labs.abeautifulsite.net/archived/phpFileTree/demo/demo_classic.php .

有了这个对象,可以使用 $var->getName()、$var->getsize() 和 $var->isDone() 检索详细信息。

最佳答案

strtok 会拯救你。

<?php

$input = [
'/RootFolder/Folder1/File1.doc',
'/RootFolder/Folder1/SubFolder1/File1.txt',
'/RootFolder/Folder1/SubFolder1/File2.txt',
'/RootFolder/Folder2/SubFolder1/File2.txt',
'/RootFolder/Folder2/SubFolder1/SubSubFolder1/File4.doc',
];

function parseInput($input) {
$result = array();

foreach ($input AS $path) {
$prev = &$result;

$s = strtok($path, '/');

while (($next = strtok('/')) !== false) {
if (!isset($prev[$s])) {
$prev[$s] = array();
}

$prev = &$prev[$s];
$s = $next;
}

$prev[] = $s;

unset($prev);
}

return $result;
}

var_dump(parseInput($input));

输出:

array(1) {
["RootFolder"]=>
array(2) {
["Folder1"]=>
array(2) {
[0]=>
string(9) "File1.doc"
["SubFolder1"]=>
array(2) {
[0]=>
string(9) "File1.txt"
[1]=>
string(9) "File2.txt"
}
}
["Folder2"]=>
array(1) {
["SubFolder1"]=>
array(2) {
[0]=>
string(9) "File2.txt"
["SubSubFolder1"]=>
array(1) {
[0]=>
string(9) "File4.doc"
}
}
}
}
}

然后你就可以随心所欲地使用这个数组了。

关于php - 从php中的完整路径创建文件树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23889469/

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