我试图递归地返回指定目录中的所有唯一实例路径。
我正在使用RecursiveDirectoryIterator
。我还想省略任何包含"的路径实例在他们身上,这就是我遇到麻烦的地方。
以下是我的测试:
<?php
function test($dir){
$dirArray = []; // the array to store dirs
$path = realpath($dir);
$dirs = new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS);
$objects = new RecursiveIteratorIterator($dirs, RecursiveIteratorIterator::SELF_FIRST);
// loop through all objects and store names in dirArray[]
foreach($objects as $name => $object){
if($object->isDir() && strpos($object->getBasename(), '.') !== true) {
$dirArray[] = $name;
echo "test: " . $object->getBasename() . "'n";
}
}
print_r($dirArray);
}
test('/some/dir');
?>
这个代码几乎可以满足我的需要。它返回所有唯一的dirs,但包括带有"的dirs在路径名中。
只需在里面添加另一个检查器,并尝试使用->getPathname()
:
if($object->isDir() && strpos($object->getPathname(), '.') === false) {
// do some stuff
}
这基本上意味着,如果这是一个目录,并且路径名不包含.