2011-08-22 17 views
5

Bir dizi dizinleri listelemek için PHP'nin RecursiveDirectoryIterator'ı kullanmaya çalışıyorum. Sahip olduğum sorun, isabet ettiği boş bir dizini atlıyor gibi görünüyor. Herhangi bir fikir boş dizinleri listelemek nasıl? Eğer başka bir yöntemi kullanarak açıkRecursiveDirectoryIterator() boş dizinleri göstermiyor

$iterator = new RecursiveIteratorIterator(
         new RecursiveDirectoryIterator($root)); 
$result = array(); 

$prefix_length = strlen($root) + 1; 
foreach($iterator as $file) 
{  
    if($file->isDir()) 
    { 

     $result[] = dirname(substr($file->__toString(), $prefix_length)); 
    } 
} 

cevap

10

Dene: Bunun

$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($root), RecursiveIteratorIterator::SELF_FIRST 
); 
+0

Teşekkür! :) Neden ~ RecursiveIteratorIterator :: LEAVES_ONLY' çalışmaz? İşe değil, sadece birinci seviyede klasörleri listeleyeceği anlamına gelir. – hek2mgl

0

Are: Burada

kullanıyorum kod klip mı? Eğer öyleyse, opendir() işlevini öneririm. Bu işlev, belirli bir ana dizinin tüm çocuklarını size sağlayacaktır. Daha sonra bir adım daha ileri gidebilir ve bir dizinse çocuklardan birine geçebilir ve gerektiğinde bu işlemi tekrarlayabilirsiniz.

opendir() üzerinde belgelere görev size yardımcı olacak bir örnek sunar:

<?php 
$dir = "/etc/php5/"; 

// Open a known directory, and proceed to read its contents 
if (is_dir($dir)) { 
    if ($dh = opendir($dir)) { 
     while (($file = readdir($dh)) !== false) { 
      echo "filename: $file : filetype: " . filetype($dir . $file) . "\n"; 
     } 
     closedir($dh); 
    } 
} 
?>