Php 带有RecursiveCallbackFilterIterator的RecursiveDirectoryIterator isn';正确过滤文件名
我试图递归地搜索具有给定名称的所有文件,同时忽略某些子目录。我不明白为什么会产生一个空数组Php 带有RecursiveCallbackFilterIterator的RecursiveDirectoryIterator isn';正确过滤文件名,php,Php,我试图递归地搜索具有给定名称的所有文件,同时忽略某些子目录。我不明白为什么会产生一个空数组 <?php $filename = 'phpunit.xml'; $ignoredDirs = ['/vagrant_web/vendor', '/vagrant_web/public']; $directories = new \RecursiveDirectoryIterator('/vagrant_web', \RecursiveDirectoryIterator::SKIP_DOT
<?php
$filename = 'phpunit.xml';
$ignoredDirs = ['/vagrant_web/vendor', '/vagrant_web/public'];
$directories = new \RecursiveDirectoryIterator('/vagrant_web', \RecursiveDirectoryIterator::SKIP_DOTS);
$filter = new \RecursiveCallbackFilterIterator(
$directories,
function ($current, $key, $iterator) use ($filename, $ignoredDirs) {
$path = $current->getPathName();
foreach ($ignoredDirs as $ignore) {
if (strpos($path, $ignore) !== false) {
return false;
}
}
if ($current->getFileName() != $filename) {
return false;
}
return true;
}
);
$files = [];
foreach (new \RecursiveIteratorIterator($filter) as $file) {
$files[] = $file;
}
print_r($files);
这是怎么回事?如何在忽略某些目录的情况下搜索特定的文件名?在回调函数的顶部包含以下内容:
if($iterator->hasChildren()) {
return true;
}
if($iterator->hasChildren()) {
return true;
}