Я использую этот код, чтобы получить список подкаталогов.
<?php
$path = '/www/sites/';
$directory_iterator = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_PATHNAME);
$iterator = new RecursiveIteratorIterator($directory_iterator,
RecursiveIteratorIterator::SELF_FIRST,
RecursiveIteratorIterator::CATCH_GET_CHILD);
foreach ($iterator as $file => $info) {
if ($info->isDir()) {
echo $file . "\n";
}
}
?>
Но это возвращает мне что-то вроде этого
/www/sites/000/4e7
/www/sites/000/4e7/.
/www/sites/000/4e7/..
/www/sites/000/4e7/mydomains.com
/www/sites/000/4e7/mydomains.com/.
/www/sites/000/4e7/mydomains.com/..
/www/sites/000/4e7/mydomains.com/web
/www/sites/000/4e7/mydomains.com/web/.
/www/sites/000/4e7/mydomains.com/web/..
/www/sites/000/4e7/mydomains.com/web/cgi-bin
/www/sites/000/4e7/mydomains.com/web/cgi-bin/.
/www/sites/000/4e7/mydomains.com/web/cgi-bin/..
/www/sites/000/4e7/mydomains.com/web/Resources
/www/sites/000/4e7/mydomains.com/web/Resources/.
Я указал корневой путь как /www/sites
Что мне нужно только в приведенном выше выводе
/www/sites/000/4e7/mydomains.com
Отдых для меня бесполезен. Это означает, что я хочу сканировать только 3 подкаталога по указанному пути. У меня есть тысячи тысяч подкаталогов, поэтому я хочу изменить текущий код, так как это занимает слишком много времени
Заранее спасибо.
использование DirectoryIterator :: isdot (), recursiveiteratoriterator :: getdepth (), например:
<?php
$path = '/www/sites/';
$directory_iterator = new RecursiveDirectoryIterator($path,RecursiveDirectoryIterator::KEY_AS_PATHNAME);
$iterator = new RecursiveIteratorIterator($directory_iterator,RecursiveIteratorIterator::SELF_FIRST,RecursiveIteratorIterator::CATCH_GET_CHILD);
foreach ($iterator as $file => $info) {
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Restrict to 3 levels only and ignore non-directory and dot files
if ($info->getDepth() >= 3 || !$info->isDir() || $info->isDot())
continue;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
echo $file . "\n";
}
Выход
/www/sites/000
/www/sites/000/4e7
/www/sites/000/4e7/mydomains.com
Других решений пока нет …