2010-06-20 140 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或更高版本。