2

我正在使用 RecursiveIteratorIterator() 来探索我当前路径的子文件夹,但是通过这种方式,所有的树都被探索了,而我只想探索我的 fodler 的直接子级来查找文件。我怎么能对 RecursiveIteratorIterator() 说不要走得更远,停止到当前文件夹的第一个子文件夹?

在 Lauri Lehtinen 之后,我尝试过这个:

    $it = new RecursiveDirectoryIterator("$directory");
    $it->setMaxDepth(1);

我有 PHP 5.2.3,但它告诉我 setMaxDepth 是未定义的。

致命错误:调用未定义的方法 RecursiveDirectoryIterator::setMaxDepth()

4

2 回答 2

6

使用该RecursiveIteratorIterator::setMaxDepth方法将深度设置为1(或任意多个级别):

于 2010-06-20T16:36:59.663 回答
0

正如 Lauri 所说,将RecursiveIteratorIterator::setMaxDepth设置为 1 是最好的方法。

查看http://www.php.net/manual/en/class.recursiveiteratoriterator.php#91519以了解如何使用它的以下示例:

<?php
$directory = "/tmp/";
$fileSPLObjects =  new RecursiveIteratorIterator(
                new RecursiveDirectoryIterator($directory),
                RecursiveIteratorIterator::CHILD_FIRST
            );
try {
    foreach( $fileSPLObjects as $fullFileName => $fileSPLObject ) {
        print $fullFileName . " " . $fileSPLObject->getFilename() . "\n";
    }
}
catch (UnexpectedValueException $e) {
    printf("Directory [%s] contained a directory we can not recurse into", $directory);
}
?>

如果您遇到问题,请确保您使用的是 PHP 5.1.0 或更高版本。

于 2010-06-20T17:05:09.320 回答