2011-02-08 12 views
2

私は、ファイルが変更された時刻を取得するスクリプトを作成しており、フィルされている場合はすべてのファイルではなくチェックするファイルのリストを持つオプションの引数を取ります。どのように私はちょうどこのようなスクリプトでこれらのファイルのためのデータを得ることについて行くことができる: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であなたのイテレータをラップすることができます。 $filesArrayのコンテンツに関する情報はほとんど提供していないため、acceptのロジックを変更して、コードで動作させる必要があります。

関連する問題