Рекурсивный поиск в каталоге всех путей к папкам - PullRequest
1 голос
/ 29 октября 2011

Я пытаюсь рекурсивно искать в каталоге все подкаталоги в любых каталогах подкаталогов.В основном все папки начинаются с корневого каталога, и мне нужно скопировать файл во все найденные папки, а также в основную корневую папку.Как я могу это сделать?

Вот что у меня пока есть, но он должен быть полностью рекурсивным, чтобы он получал все папки в этом корне, а также папки в подпрограммах и папки в нем, непрерывный поиск, покапапок больше не осталось ...

@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 Ответ

9 голосов
/ 29 октября 2011

Повторение по файловой системе только для каталогов может быть очень простым, если использовать 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...