递归搜索目录中的所有文件夹路径

时间:2011-10-29 11:43:55

标签: php directory-structure

我正在尝试以递归方式在目录中搜索子目录的任何目录中的所有子目录。基本上所有文件夹都从根目录开始,我需要将文件复制到找到的所有文件夹以及主根文件夹中。我怎么能这样做?

这是我到目前为止所拥有的内容,但它需要完全递归,以便它获取该根目录中的所有文件夹,以及其中的文件夹,以及其中的文件夹,无休止的搜索,直到没有剩余文件夹...

@copy($extendVars['dir'] . '/index.php', $real_extendpath . '/index.php');

$dh = @opendir($real_extendpath);
while (false !== ($obj = readdir($dh)))
{
    if ($obj == '.' || $obj == '..')
        continue;

    if (is_dir($real_extendpath . '/' . $obj))
        @copy($extendVars['dir'] . '/index.php', $real_extendpath . '/' . $obj . '/index.php');
}

closedir($dh);

1 个答案:

答案 0 :(得分:9)

使用RecursiveDirectoryIterator和标准PHP库中的朋友(docs),只对目录的文件系统进行递归可以非常简单。

一个基本的例子看起来像

$directories = new RecursiveIteratorIterator(
    new ParentIterator(new RecursiveDirectoryIterator($directory_to_iterate)), 
    RecursiveIteratorIterator::SELF_FIRST);

foreach ($directories as $directory) {
    // Do your work here
}

根据您的特定需求,// Do your work here可能与以下代码段一样简单。

copy($extendedVars['dir'] . '/index.php', $directory . '/index.php');