SPL을 사용하여 전체 디렉토리 트리를 검색하려면 어떻게해야합니까?
문제
전체 디렉토리 트리를 사용하여 어떻게 검색 할 수 있습니까? SPL
, 아마도 사용 RecursiveDirectoryIterator
그리고 RecursiveIteratorIterator
?
해결책
기본적으로 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;
}
}
다른 팁
당신은 단지 당신이 원하는 모든 것을 할 수 있습니다.
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $file)
{
/* @var $file SplFileInfo */
//...
}
제휴하지 않습니다 StackOverflow