【问题标题】:File structure to multidimensional array多维数组的文件结构
【发布时间】:2013-08-15 11:10:54
【问题描述】:

我需要将所有目录和文件存储在给定位置的多维数组中(示例:/path/to/folder)。无论多深,它都应该包括子文件夹。

已编辑:

我尝试使用 php scandir,它给了我以下结果,

代码:

$dir    = '/path/to/folder';
$files = scandir($dir);
print_r($files);

结果:

Array
(
    [0] => .
    [1] => ..
    [2] => folder1
    [3] => file1
    .....
)

我需要的是获取文件夹 1 中的内容并连续执行,直到获得包含所有文件的完整文件夹结构。

P.S:我需要删除“。”以及结果数组中的“..”。

【问题讨论】:

  • 你尝试过什么吗?
  • 我发现了一些东西,我只需要在社区中分享我的知识
  • 您可以发布链接或仅提及该方法的摘要...
  • 查看标准 Php 库 (SPL) 中的 RecursiveDirectoryIterator 对象。 php.net/manual/de/class.recursivedirectoryiterator.php
  • 编辑问题以便我可以取消投票

标签: php directory iteration


【解决方案1】:

对于文件列表 php 提供 readdirscandir 函数。

我更喜欢 sccandir,因为它是新的(php 5>),我们可以为此使用以下递归函数。

需要提供目录路径(/path/to/your/folder)作为参数,它会返回具有文件夹结构的多维数组。

function dirToArray($dir) {
    $result = array();
    $cdir = scandir($dir);
    foreach ($cdir as $key => $value) {
        if (!in_array($value,array(".","..")))  {
            if (is_dir($dir . DIRECTORY_SEPARATOR . $value)){
                $result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value);
            } else {
                $result[] = $value;
            }
        }
    }
    return $result;
}

【讨论】:

  • 在提供完整代码之前,让我们看看 OP 尝试了什么,然后您可以改进或提供新方法...
  • 我希望这对某人有所帮助
  • @Akam:提问者和回答者是一样的!
  • @Dale:那你为什么要背负投票的责任?没有人会支持任何事情,但是无论谁提出或回答,都应该支持有事实支持的好问题和好答案。不喜欢答案?给一个更好的,或者改进现有的。不喜欢提问的方式?改进问题!但不要抱怨那 5 或 10 点无用的废话!
猜你喜欢
  • 1970-01-01
  • 2010-10-14
  • 2020-09-19
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多