मैं PHP के एसपीएल रिकर्सिव इटरेटर्स के साथ काम कर रहा हूं, लेकिन वे मुझे भ्रमित कर रहे हैं, लेकिन मैं सीख रहा हूं।PHP के इटरेटर वर्ग
मैं उन परियोजनाओं में उनका उपयोग कर रहा हूं जहां मुझे सभी फ़ाइलों को दोबारा पकड़ने और मेरे परिणाम से फ़ोल्डर्स को बाहर करने की आवश्यकता है। मैं शुरू में इस पद्धति का उपयोग कर रहा था ...
$directory = new RecursiveDirectoryIterator($path);
$iterator = new RecursiveIteratorIterator($directory,
RecursiveIteratorIterator::CHILD_FIRST);
foreach ($iterator as $fileinfo) {
if ($fileinfo->isDir()) {
//skip directories
//continue;
}else{
// process files
}
}
लेकिन फिर एक बहुत उपयोगकर्ता है कि मैं इस विधि का उपयोग करने के बजाय इतना है कि मैं अपने पाश में isDir()
विधि का उपयोग करने की जरूरत नहीं होगी सुझाव दिया ...
$directory = new RecursiveDirectoryIterator($path,
RecursiveDirectoryIterator::SKIP_DOTS);
$iterator = new RecursiveIteratorIterator($directory,
RecursiveIteratorIterator::LEAVES_ONLY);
सूचना है कि मैं RecursiveDirectoryIterator
निर्माता जो फ़ोल्डर या .
और ..
को छोड़ अब मैं क्योंकि कुछ परीक्षण के बाद उलझन में हूँ, यहाँ तक किका उपयोग किए बिना माना जाता है में RecursiveDirectoryIterator::SKIP_DOTS
इस्तेमाल कियाऐसा लगता है कि वे उन्हें नहीं दिखा रहे हैं, मैं विंडोज का उपयोग कर रहा हूं, यही कारण हो सकता है, क्या डॉट्स केवल यूनिक्स प्रकार प्रणाली पर दिखाई देते हैं? या क्या मैं इस बिंदु पर उलझन में हूं कि मुझे कुछ याद आ रहा है?
RecursiveIteratorIterator::CHILD_FIRST
के बजाय RecursiveIteratorIterator::LEAVES_ONLY
का उपयोग करके यह फ़ोल्डर्स को मेरे परिणाम में दिखने से रोक देगा जो मैं चाहता हूं लेकिन मुझे समझ में नहीं आता क्यों? प्रलेखन में इस
* (sidenote) * डिफ़ॉल्ट पुनरावृत्ति मोड 'LEAVES_ONLY' है, इसलिए आपको केवल 'नया रिकर्सिवइटरेटर इटरेटर ($ निर्देशिका) है;' - मैं इस – Gordon