2011-02-08 44 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 2011-02-08 09:43:35

回答

2

你可以用你的迭代器在自定义Filter Iterator(促进重用)

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当前元素是不是在迭代考虑。由于您仅提供有关您的$filesArray内容的信息很少,因此您可能必须更改accept逻辑以使其适用于您的代码。