2016-05-19 4 views
1

Я хочу удалить некоторые каталоги, и у меня есть их имена, хранящиеся в массиве, называемом папками.PHP, удалить каталоги

foreach ($folders as $f){ 
    rmdir($dir); 
    $dir=rtrim($dir,"/"); 
    $dir=rtrim($dir,$f); 
} 

Например:

dir: /cdf5/gfft/ 
and folders: gftt,cdf5 

Я видел, что иногда RTRIM функция сократить более чем 4-х символов, а остальные пути в директории есть: /cdf.

В чем проблема?

+0

доли вашего '$ folders' массив нам. –

+0

Где находится '$ dir'? – bg17aw

+0

Если вы хотите удалить трейлинг-косую черту, используйте более дешевое действие для сервера. –

ответ

2

Эта функция удаляет каталог с файлами внутри

function deldirectory($dir){ 

$tfile = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS); 
$files = new RecursiveIteratorIterator($tfile, 
      RecursiveIteratorIterator::CHILD_FIRST); 
foreach($files as $file) { 
    if ($file->isDir()){ 
     rmdir($file->getRealPath()); 
    } else { 
     unlink($file->getRealPath()); 
    } 
} 
return rmdir($dir); 
} 

Тогда вы можете вызвать эту функцию

foreach ($folders as $f){ 
    deldirectory($f); 
} 
+0

Спасибо! Можете ли вы сказать мне, почему мое решение не работает? – CCT

+0

Возможно, у него есть файлы или подкаталог, поэтому он не будет работать. rmdir удаляет только пустой каталог. Поэтому перед удалением каталога сначала удалите файлы и подкаталоги. –