PHP:如何填充数组中的目录结构

2023-11-29

我正在开发一个管理面板,显示服务器上特定位置的目录结构。我有一个递归 php 函数,可以迭代每个文件和文件夹。我不明白的是如何将此目录结构存储在 php 关联数组中,如下所示:

array[foldername1][0]=file; // if the foldername1 contains a file
array[foldername1][foldername2][0]=file //if foldername1 contains another folder(foldername2) along with the file.

我试图遵循的规则是;文件夹应始终是键,文件应始终位于如下索引处:

array[folder1][folder2][0]=file1;
array[folder1][folder2][1]=file2;

填充这个关联数组的函数应该是通用的,因为我们永远不知道目录结构是什么。我想将此数组 json_encode 返回给我的客户端并在 JavaScript 中处理它,这目前不是问题。

如果这是一个不好的方法,请告诉我,因为可能有更好的方法来做到这一点。我想过使用平面阵列,但我想这是一个糟糕的设计。


$ritit = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__), RecursiveIteratorIterator::CHILD_FIRST);
$r = array();
foreach ($ritit as $splFileInfo) {
   $path = $splFileInfo->isDir()
         ? array($splFileInfo->getFilename() => array())
         : array($splFileInfo->getFilename());

   for ($depth = $ritit->getDepth() - 1; $depth >= 0; $depth--) {
       $path = array($ritit->getSubIterator($depth)->current()->getFilename() => $path);
   }
   $r = array_merge_recursive($r, $path);
}

print_r($r);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP:如何填充数组中的目录结构 的相关文章

随机推荐

  • 在 iOS 上获取相对于地理北方的俯仰、横滚和偏航?

    我看到我可以检索CMA态度从设备中我可以读取我需要的 3 个值 俯仰 滚动和偏航 据我了解 这个 CMAttitude 对象由 CoreMotion 管理 它是一个传感器融合管理器 用于计算罗盘 陀螺仪和加速度计的正确结果 在 Androi
  • 在装有 VS2013 的计算机上安装 SQL Server 2012 时出现错误 0x84b10001

    我正在尝试安装SQL Server Express 服务包 1在我的 Win8 Pro x64 开发机器上 当我尝试安装它时 总是收到错误 0x84b10001 安装过程中禁用了防病毒软件 以管理员身份完成 我尝试了 2 个版本的 SQL
  • 使用 JSch 打开 SSH 隧道时私钥无效

    With JSch我正在打电话addIdentity 添加私钥并getSession 打开 SSH 隧道 当在我的 Windows 计算机上本地运行此代码时 隧道的打开工作正常 然而 当在我们的 CI 上使用相同的私钥运行相同的代码时 会出
  • 如何使用 Diesel 根据动态参数按列有条件地排序?

    我正在尝试指定不同的列order by取决于外部参数 这可行 但很难看 macro use extern crate diesel use crate diesel prelude use diesel pg PgConnection mo
  • 在 Mac 上使用 Eclipse Galileo 调试 C++ 时遇到问题

    我正在尝试在运行的 MacBook Pro 上使用 Eclipse Galileo 调试 C 代码Mac OS X v10 5 豹 这是我第一次尝试这个 我有一个复杂的 C 程序想要调试 但为了测试一下 我只是尝试调试并逐步执行以下操作 i
  • C 中可以重新定义 { 和 } 吗?

    有什么办法可以做类似的事情吗 define printf s s FUNCTION LINE 这不会编译 但我想知道是否有某种技巧可以有效地获得相同的功能 除了编写一个工具来挂钩预处理步骤 这样做的目的是思考如何获得穷人的代码覆盖率 用宏肯
  • 如何将制表符分隔的文本文件导入Excel?

    我的文件夹中有多个以制表符分隔的文本文件 txt 该文本文件包含第一行作为列标题 我有一个预定义的 Excel 模板 其中包含列名称 我能够将文本文件导入 Excel 模板 但是 我需要做的是如何通过 VBA 来分隔列标题与 Excel 列
  • 如何检查素数

    以下代码列出了从 1 到 10 的所有素数 Dim primeN As Integer Dim primeI As Integer Dim primeFlag As Boolean For primeN 1 To 10 primeFlag
  • Glassfish 4,CDI 中的简单示例因 WELD-001408 依赖关系不满足而失败

    我是 CDI 的新手 这是我的第一个示例 我正在尝试运行它 在网上搜索后 我编写了以下代码 我想要注入的类 public class Temp public Temp public String getMe return something
  • 后退和前进按钮来控制 ajax 负载

    一起哈喽 我正在寻找一种解决方案 其中后退和前进按钮控制我的 ajax 调用历史记录 因此 如果我进行 ajax 调用 然后按 返回 我想重新加载原始页面 如果我执行一次 ajax 调用 然后执行另一个 然后按后退按钮 我想再次执行第一个
  • Selenium Webdriver - 单击隐藏元素

    我正在尝试自动执行 Google Drive 中的上传文件功能 用于传递参数的元素被隐藏 高度为 0px 任何用户操作都不会使该元素可见 因此 我需要解决在元素不可见时单击该元素的问题
  • CMake 不带目录路径的文件的 glob 列表

    如果您使用 glob 文件列表file GLOB 在 CMake 中 所有文件都列出并附有完整路径 如何在 CMake 中 glob 一组文件 仅保存文件名 我读了官方手册在这里我发现了这个 file GLOB
  • SQL Server“文本”数据类型的 WHERE 子句

    其中 CastleType 在 SQL Server 中设置为数据类型 text 查询为 SELECT FROM Village WHERE CastleType foo 我收到错误 数据类型TEXT and VARCHAR在等于运算符中不
  • C# Web API INNER JOIN 和 RETURN 查询值

    EF Model Image References 我计划从数据库读取数据 然后使用内部联接 in C WebApi控制器如下图所示 以下查询适用于内部联接参考 Select FirstName LastName Gender Salary
  • 带有 LEFT JOIN 问题的 SQL 查询

    我在使用左连接 SQL 查询时遇到问题 但不明白为什么它不起作用 我有 3 个表 客户 购买和付款 我试图选择总购买成本小于总付款的客户 即他们的余额大于 0 到目前为止 我有以下内容 Tables Customers id Name Pu
  • OSMDroid zip - 如何添加自定义地图?

    我正在使用 OSMdroid 的 MapView 并且计划添加自定义地图 我无法通过 MOBAC 转换它们 我需要找出格式首选项和特征 你看过一些有关它的信息吗 我已经找了好几个星期了 但没有成功 您是指平铺格式吗 我相信this是一个很好
  • 如何显示指定目录下的文件列表

    如何在PyQt窗口中以ListView的方式显示代码中指定目录下的文件 示例 就像在此 QFileSystemModel 对话框应用程序的右窗格中一样 你必须创建2个QFileSystemModel 一个将显示目录 另一个将显示文件 改变视
  • SpringMVC url 重写与 tuckey UrlRewriteFilter

    如何在 Spring MVC 中重写 url塔基的 UrlRewriteFilter像这样 From http localhost 8080 demo api do method getUser uid 1001 to http local
  • 单元测试自定义 OnRender-Method

    我有一个自定义控件MyControl它继承自Canvas并且里面有自己的逻辑OnRender 方法 它应该在绘图上下文中绘制一些矩形和文本 public class MyControl Canvas protected override v
  • PHP:如何填充数组中的目录结构

    我正在开发一个管理面板 显示服务器上特定位置的目录结构 我有一个递归 php 函数 可以迭代每个文件和文件夹 我不明白的是如何将此目录结构存储在 php 关联数组中 如下所示 array foldername1 0 file if the