2010-06-20 124 views
2

我正在使用RecursiveIteratorIterator()來探索我當前路徑的子文件夾,但通過這種方式探索了所有trhe樹,而我只想爲我的fodler直接childern探索文件。我怎麼能說RecursiveIteratorIterator()不再進一步,並停止對當前文件夾的第一個subfodlers?限制RecursiveIteratorIterator()遞歸深度

繼勞裏·萊赫蒂寧,我已經試過這樣:

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

我有PHP 5.2.3,但它說我setMaxDepth是不確定的。

Fatal error: Call to undefined method RecursiveDirectoryIterator::setMaxDepth()

+2

你正在調用RecursiveDirectoryIterator,而不是RecursiveIteratorIterator。 – Artefacto 2010-06-20 17:32:24

回答

0

正如勞裏說,設置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或更高版本。