2011-10-29 3 views
1

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

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

@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); 
+2

Вам нужно сделать функцию из этого, чтобы назвать ее рекурсивной. – str

+0

нормально, но как? Я не вижу способа сделать это. Есть ли лучший способ сделать это, кроме использования readdir? Не существует ли какой-либо функции RecursiveIterator? Будет ли это лучше? Если да, то как использовать эту функцию для меня тоже сложно ... – SoLoGHoST

+1

В руководстве полно примеров. http://www.php.net/manual/en/function.scandir.php#105891 - Также 'RecursiveDirectoryIterator' – mario

ответ

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'); 
+0

Спасибо, очень полезно! :) – SoLoGHoST

+0

Вы спасли мой день ... thax –

Смежные вопросы