2

現在のパスのサブフォルダーを探索するために RecursiveIteratorIterator() を使用していますが、この方法ではすべてのツリーが探索されます。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 に答える