我正在编写一个获取文件修改次数的脚本,并采用一个可选的arg,如果填充了一个数组,其中包含要检查的文件列表,而不是每个文件。我怎样才能在这样的脚本中获取这些文件的数据:
$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 :(得分:2)
您可以将Iterator包装在自定义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
逻辑以使其适用于您的代码。