php - 遍历多个 RecursiveDirectoryIterator

标签 php iterator

我目前有以下 PHP:

$directoryIterator = new RecursiveDirectoryIterator( __DIR__ . '/tests/phpunit/' );

/**
 * @var SplFileInfo $fileInfo
 */
foreach ( new RecursiveIteratorIterator( $directoryIterator ) as $fileInfo ) {
    if ( substr( $fileInfo->getFilename(), -8 ) === 'Test.php' ) {
        $files[] = $fileInfo->getPathname();
    }
}

这会创建一个数组,其中包含/tests/phpunit 中以 Test.php 结尾的文件的路径。效果很好。但是现在我也想在/tests/integration 中注册东西。 (/tests 中还有更多内容,所以我不能简单地遍历整个目录。)我可以复制代码,但那很蹩脚。所以现在我想弄清楚如何循环两个 RecursiveDirectoryIterator 实例。这可能以一种理智的方式实现吗?

最佳答案

要遍历迭代器,您可以使用 AppendIterator class.

$directoryIterator = new RecursiveDirectoryIterator( __DIR__ . '/tests/phpunit/' );
$directoryIterator1 = new RecursiveDirectoryIterator( __DIR__ . '/tests/integration/' );
$iterator = new AppendIterator();
$iterator->append(new RecursiveIteratorIterator( $directoryIterator ));
$iterator->append(new RecursiveIteratorIterator( $directoryIterator1 ));

/**
 * @var SplFileInfo $fileInfo
 */
foreach ($iterator as $fileInfo) {
    if ( substr( $fileInfo->getFilename(), -8 ) === 'Test.php' ) {
        $files[] = $fileInfo->getPathname();
    }
}

关于php - 遍历多个 RecursiveDirectoryIterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17079881/

相关文章:

php - 在php中为多个列分配多个变量

c++ - 3d 数组索引上的迭代器

php - 如何在MySQL select语句的其他区域引用派生值?

javascript - JS运行后获取源码

string - 是否有 String::chars 的自有版本?

python - 为什么 <for i 在 obj :> and <for i in iter(obj):> equivalent?

php - 什么是 PHP 中的对象迭代

python - 在 Python 中读取 .csv 而不遍历整个文件?

php - 提交后将 &lt;input type ="file"> 传递给其他表单

java - RegEx : Where should I start? 之后分割 PDF