如何获取指定路径的所有子目录的数组?

ope*_*rog 1 php filesystems

例如,我有一个像这样的目录结构:

my_stuff
   classes
      one
      two
          more
          evenmore
              manymore
                  subsub
                      subsubsub
          otherstuff
          morestuff
              deepstuff
                  toomuch
Run Code Online (Sandbox Code Playgroud)

我想在类包含路径的类下添加所有(!).我怎么会得到这样的阵列?有没有一些花哨的PHP功能?

Gor*_*don 6

使用SplIterators可以轻松地递归遍历目录.你这样做

$path = realpath('.');

$elements = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($path),
    RecursiveIteratorIterator::SELF_FIRST);

foreach($elements as $element){
    // element is an SplFileObject
    if($element->isDir()) { 
        echo "$element\n"; // do whatever
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,不要将每个目录添加到包含路径.

如果将所有这些文件夹添加到包含路径,则会严重降低应用程序的速度.如果您的类在subsubsub中,PHP将首先搜索my_stuff,然后搜索类,然后搜索一个,然后搜索两个,依此类推.

而是让您的类名遵循PEAR约定并使用自动加载.

看到