SPL
を使用して、場合によってはRecursiveDirectoryIterator
およびを使用して、完全なディレクトリ ツリーを取得するにはどうすればよいRecursiveIteratorIterator
ですか?
6027 次
2 に答える
19
デフォルトでは、は の 2 番目の引数としてRecursiveIteratorIterator
を使用します。これは、ファイルのみを返すことを意味します。ファイルとディレクトリを含めたい場合 (少なくとも、それは完全なディレクトリ ツリーと見なすものです)、次のようにする必要があります。LEAVES_ONLY
__construct
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($path),
RecursiveIteratorIterator::SELF_FIRST
);
そして、あなたはそれをforeach
乗り越えることができます。ディレクトリツリーを出力する代わりに返したい場合は、配列に格納できます。
foreach ($iterator as $fileObject) {
$files[] = $fileObject;
// or if you only want the filenames
$files[] = $fileObject->getPathname();
}
$fileObjects
次のようにして、なしでの配列を作成することもできますforeach
。
$files[] = iterator_to_array($iterator);
ディレクトリのみを返したい場合は、次foreach
の$iterator
ようにします。
foreach ($iterator as $fileObject) {
if ($fileObject->isDir()) {
$files[] = $fileObject;
}
}
于 2010-04-16T19:28:36.850 に答える
3
あなたはただ、またはあなたが望むすべてをすることができます
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $file)
{
/* @var $file SplFileInfo */
//...
}
于 2010-03-17T15:28:48.613 に答える