php - 列出目录和子目录并将每个级别存储在数组中
问题描述
想先扫描根文件夹,将找到的目录存储在数组中(级别 1)。然后扫描我找到的每个子目录并将它们存储在级别 1 中,作为级别 2 等等。
我怎样才能做到最多 5 个级别,并在屏幕上显示为文件夹树。
我做了一个糟糕的代码,有很多错误,但工作一半:
$dir = "../pdoks"; //root folder
$szint1 = scandir($dir); //szint1 means LEVEL 1
unset($szint1[array_search('.', $szint1, true)]); //remove dots
unset($szint1[array_search('..', $szint1, true)]);
$countdir = count($szint1); //measure array's length
for($i=0;$i<$countdir;$i++){
echo $szint1[$i] . "<br>"; //list directories in my given root
$szint2 = scandir($dir . "/" . $szint1[$i]); //szint2 as the new root folder
unset($szint2[array_search('.', $szint2, true)]); //remove dots
unset($szint2[array_search('..', $szint2, true)]);
$countdir2 = count($szint2); //measure 2nd array's length
for ($j=0;$j<$countdir2;$j++){
echo $szint2[$j] . "<br>"; //list directories in new root
$szint3 = scandir($dir . "/" . $szint1[$j] . "/" . $szint2[$j]); //szint2 as the new root folder (../pdoks/szint1/szint2)
unset($szint3[array_search('.', $szint3, true)]); //remove dots
unset($szint3[array_search('..', $szint3, true)]);
$countdir3 = count($szint3);
for ($k=0;$k<$countdir3;$k++){
echo $szint3[$k] . "<br>"; //list directories in new root level 3 folders
//...etc
}
}
}
错误是:
“未定义的偏移量:0”//或任何数字“scandir(../pdoks//PoosIstvan): 无法打开目录:没有这样的文件或目录”
//似乎路径中缺少第 2 级
解决方案
网络上有很多示例可以获取文件和文件夹的递归列表。您应该避免嵌套循环,尝试使用递归函数调用或迭代方式 使用 PHP 递归函数列出目录中的所有文件和文件夹
推荐阅读
- python - Python:使用的不同方法
- sql - sqlite3中的嵌套子查询用于更新表记录
- http - 通过一个 http.ResponseWriter 发送少量响应
- vue.js - 使用 v-for 渲染子组件
- angular - 无法在 Angular 中显示价值服务
- react-native - 原子中的 Npm 安装集会编码 eslint 不起作用
- r - 分类错误 新数据的因子水平与原始数据不匹配
- vb.net - vb.net:datetimerpicker mindate 触发值更改
- javascript - 带有 FileReader 的 JavaScript Promise
- java - Camel:迭代标题中的元素,并行处理