यहां हॉर्स उत्तर का एक संशोधित संस्करण है, मेरे मामले के लिए थोड़ा बेहतर काम करता है, क्योंकि यह आधार निर्देशिका को स्ट्रिप्स करता है जो इसे जाते ही पास हो जाता है, और एक पुनरावर्ती स्विच होता है जिसे गलत पर सेट किया जा सकता है जो कि आसान भी है। साथ ही आउटपुट को अधिक पठनीय बनाने के लिए, मैंने फ़ाइल और उपनिर्देशिका फ़ाइलों को अलग कर दिया है, इसलिए फाइलें पहले जोड़ दी जाती हैं फिर उपनिर्देशिका फाइलें (मेरे कहने का परिणाम देखें।)
मैंने आसपास कुछ अन्य तरीकों और सुझावों की कोशिश की और यही मैंने समाप्त किया। मेरे पास एक और काम करने का तरीका पहले से ही था जो बहुत ही समान था, लेकिन ऐसा प्रतीत होता था कि जहाँ कोई फ़ाइल नहीं के साथ एक उपनिर्देशिका थी, लेकिन उस उपनिर्देशिका में फ़ाइलों के साथ एक उप -निर्देशिका थी , यह फ़ाइलों के लिए उप -निर्देशिका को स्कैन नहीं करता था - इसलिए कुछ उत्तरों को जांचने की आवश्यकता हो सकती है उस मामले के लिए।) ... वैसे भी मुझे लगा कि मैं अपना संस्करण यहां भी पोस्ट करूंगा क्योंकि कोई देख रहा है ...
function get_filelist_as_array($dir, $recursive = true, $basedir = '', $include_dirs = false) {
if ($dir == '') {return array();} else {$results = array(); $subresults = array();}
if (!is_dir($dir)) {$dir = dirname($dir);}
if ($basedir == '') {$basedir = realpath($dir).DIRECTORY_SEPARATOR;}
$files = scandir($dir);
foreach ($files as $key => $value){
if ( ($value != '.') && ($value != '..') ) {
$path = realpath($dir.DIRECTORY_SEPARATOR.$value);
if (is_dir($path)) {
if ($include_dirs) {$subresults[] = str_replace($basedir, '', $path);}
if ($recursive) {
$subdirresults = get_filelist_as_array($path, $recursive, $basedir, $include_dirs);
$results = array_merge($results, $subdirresults);
}
} else {
$subresults[] = str_replace($basedir, '', $path);
}
}
}
if (count($subresults) > 0) {$results = array_merge($subresults, $results);}
return $results;
}
मुझे लगता है कि एक बात का ध्यान रखना चाहिए कि इस फ़ंक्शन को कॉल करते समय $ आधारित मूल्य को पारित न करें ... ज्यादातर बस $ dir (या एक फ़ाइलपथ पास करने पर भी काम करेंगे) और वैकल्पिक रूप से $ recursive के रूप में अगर और जरूरत है। परिणाम:
[0] => demo-image.png
[1] => filelist.php
[2] => tile.png
[3] => 2015\header.png
[4] => 2015\08\background.jpg
का आनंद लें! ठीक है, उस प्रोग्राम पर वापस आ रहा हूं जिसमें मैं वास्तव में इसका उपयोग कर रहा हूं ...
अद्यतन सूची में निर्देशिकाओं को शामिल करने के लिए अतिरिक्त तर्क जोड़ा गया है या नहीं (अन्य तर्कों को याद रखने के लिए इसे उपयोग करने के लिए पारित करने की आवश्यकता होगी।) उदा।
$results = get_filelist_as_array($dir, true, '', true);
RecursiveDirectoryIterator