2011-08-22 23 views
5

मैं निर्देशिकाओं के एक समूह को सूचीबद्ध करने के लिए PHP के रिकर्सिव डायरेक्टरी इटरेटर का उपयोग करने की कोशिश कर रहा हूं। मेरे पास जो मुद्दा है वह यह है कि ऐसा लगता है कि यह किसी भी खाली निर्देशिका को छोड़ देता है। कोई विचार यह कैसे खाली निर्देशिका सूची बनाने के लिए?रिकर्सिव डायरेक्टरी इटरेटर() खाली निर्देशिका नहीं दिखा रहा है

$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)); 
    } 
} 

उत्तर

10

प्रयास करें:

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

इस के लिए धन्यवाद! :) क्या आप समझा सकते हैं कि '~ रिकर्सिवइटरेटर इटरेटर :: LEAVES_ONLY' क्यों काम नहीं करेगा? काम नहीं करने का मतलब है कि यह केवल पहले स्तर पर फ़ोल्डर्स सूचीबद्ध करेगा। – hek2mgl

0

यदि आप किसी अन्य विधि का उपयोग करने के लिए खुले हैं:

यहाँ कोड मैं उपयोग कर रहा हूँ की एक क्लिप है? यदि ऐसा है, तो मैं opendir() फ़ंक्शन की अनुशंसा करता हूं। यह फ़ंक्शन आपको एक विशिष्ट मूल निर्देशिका के सभी बच्चों के साथ प्रदान करेगा। फिर आप एक कदम आगे जा सकते हैं और बच्चों में से एक में जा सकते हैं यदि वे एक निर्देशिका भी हैं, तो आवश्यकता होने पर प्रक्रिया को दोहराएं।

opendir() पर दस्तावेज़ीकरण अपने कार्य के साथ मदद करने के लिए एक उदाहरण देता है:

<?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); 
    } 
} 
?> 
संबंधित मुद्दे