【发布时间】:2017-03-20 09:34:18
【问题描述】:
我正在尝试从字符串映射 JSON 有我的字符串
files/a/b.txt
我想像这样映射一个 JSON
{
"name" => "files",
"path" => "files",
"type" => "folder",
"items" => [{
"name" => "a",
"path" => "files/a",
"type" => "folder",
"items" => [{
"name" => "b.txt",
"path" => "files/a/b.txt",
"type" => "file",
}]
}]
}
这里我展示了一个子文件夹,但它可以是无限的子文件夹。 任何帮助将不胜感激。谢谢。
更新: 这就是我现在所拥有的
$str = "files/a/b.txt";
$path = explode("/",$str);
$num = count($path);
$num = --$num;
$files = array();
if($num > 2) {
foreach ($path as $keys => $value) {
if($keys > 1 && $keys < $num) {
$files[] = array(
"name" => $value,
"type" => "folder",
"path" => $path[0]."/".$path[1]."/".$value,
"items" =>
);
}
}
}else{
$files[] = array(
"name" => $path[2],
"type" => "file",
"path" => $path[0]."/".$path[1]."/".$path[],
"size" => filesize($path[0]."/".$path[1]."/".$path[])
);
}
echo json_encode($files);
但我不知道如何编写项目部分。此代码仅适用于一个子文件夹,仍然无法将文件包含在文件夹项目中。
注意:考虑路径不一定存在。
【问题讨论】:
-
欢迎来到 SO。向我们展示您目前拥有的代码,这里的人会帮助您,但他们不会为您编写代码。
-
这是整个代码吗?你能告诉我们整个功能吗?如果是这样,那么您必须使用循环才能递归地遍历所有文件夹。
-
@AnthonyGranger 是的,这是整个代码。我可以递归地写入映射文件夹。但我不需要它来列出所有文件夹。例如,我只需要它来列出文件夹'b'而不是显示“文件”文件夹中的所有子文件夹
标签: php arrays json subdirectory