2011-02-08 7 views
2

나는 파일 수정 시간을 얻는 스크립트 작업을하고, 채워지는 경우 모든 파일 대신 검사 할 파일 목록이있는 선택적 arg를 취합니다. 어떻게 난 그냥 같이 스크립트에서 해당 파일에 대한 데이터를 얻기에 관하여 갈 수 :DirectoryIterator 출력의 파일 필터링

$filesObject = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); 

foreach ($filesObject as $key => $object) 
{ 
    $checkFile = filemtime($object->getPathname()); 
    $num++; 
    $alertFiles[$num] = array('name' => $object->getPathname(), 
           'time' => $checkFile); 
} 

편집 :이 코드는 $ filesArray가 전달 될 수있는 파일 이름의 배열 함수입니다.

+0

필터링 할 파일의 기준은 무엇입니까? 코드에는'$ filesArray'가 없습니다. 어떻게 보이는지 알려주세요. – Gordon

+0

나는이 질문을 이해하지 못한다. 그래서 나는 더 깊이 들어갈 것이다. 현재 코드 쇼처럼, 그것은 $ path에있는 모든 파일을 검사합니다. $ filterArray에 나열된 파일이있을 경우 특정 파일 만 검사하거나 보여주기위한 방법을 찾고 있습니다. – Anonymous

+0

코드에'$ filterArray'가 없습니다. 무엇이 포함되어 있습니까? "파일"형식은 무엇입니까? 절대 경로? 파일 이름 만? 패턴? SplFileObject? – Gordon

답변

2

당신은

class FileFilter extends FilterIterator 
{ 
    protected $_files; 

    public function __construct($iterator, array $files) 
    { 
     $this->_files = $files; 
     parent::__construct($iterator); 
    } 

    public function accept() 
    { 
     return !in_array($this->current(), $this->_files); 
    } 
} 

accept하면 반환 FALSE 현재 요소는 반복 처리로 간주되지 않습니다 (재사용을 촉진하기 위해) 사용자 정의 Filter Iterator에 Iterator를 포장 할 수 있습니다. $filesArray 내용에 대한 정보가 거의 없으므로 accept 로직을 변경해야 코드에서 작동 할 수 있습니다.

관련 문제