এখানে হর্সের উত্তরের একটি পরিবর্তিত সংস্করণ রয়েছে, এটি আমার ক্ষেত্রে কিছুটা ভাল কাজ করে, কারণ এটি যেভাবে বেজ ডিরেক্টরিটি যায় তেমন পাস করে, এবং এটি একটি পুনরাবৃত্ত সুইচ রয়েছে যা মিথ্যাতে সেট করা যেতে পারে যা কার্যকর। আউটপুটটিকে আরও পঠনযোগ্য করে তোলার জন্য, আমি ফাইল এবং সাব-ডাইরেক্টরি ফাইলগুলি পৃথক করেছি, তাই ফাইলগুলি প্রথমে সাব-ডাইরেক্টরি ফাইল যুক্ত করা হয় (আমার অর্থের ফলাফল দেখুন))
আমি আশেপাশে কয়েকটি অন্যান্য পদ্ধতি এবং পরামর্শ চেষ্টা করেছি এবং এটিই আমার শেষ হয়েছিল। আমি অন্য কাজ পদ্ধতি ইতিমধ্যে যে অনুরূপ হয়েছিল, কিন্তু ব্যর্থ যেখানে কোন ফাইল সঙ্গে একটি সাব ছিল করলো কিন্তু যে সাব একটি subsubdirectory ছিল সঙ্গে ফাইল, এটা ফাইলের জন্য subsubdirectory স্ক্যান করা হয়নি - তাই কিছু উত্তর পরীক্ষিত করা প্রয়োজন হতে পারে সে ক্ষেত্রে।) ... যাইহোক ভেবেছিল কেউ যদি এখানে দেখছে তবে আমি আমার সংস্করণটি এখানে পোস্ট করব ...
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;
}
আমি মনে করি একটি জিনিস এটিকে কল করার সময় এই ফাংশনটির কোনও $ ভিত্তিক মান পাস না করার বিষয়ে সতর্কতা অবলম্বন করা উচিত ... বেশিরভাগ ক্ষেত্রে কেবল $ দির পাস করুন (বা একটি ফাইলপথ পাস করা এখন খুব কার্যকর হবে) এবং optionচ্ছিকভাবে মিথ্যা হিসাবে যদি পুনরাবৃত্তি হয় এবং প্রয়োজন। ফলাফল:
[0] => demo-image.png
[1] => filelist.php
[2] => tile.png
[3] => 2015\header.png
[4] => 2015\08\background.jpg
উপভোগ করুন! ঠিক আছে, প্রোগ্রামটিতে ফিরে আমি আসলে এটি ব্যবহার করছি ...
আপডেট করুন ফাইল তালিকায় ডিরেক্টরি অন্তর্ভুক্ত করার জন্য অতিরিক্ত যুক্তি যুক্ত করা হয়েছে বা নেই (অন্যান্য যুক্তিগুলি মনে রাখার জন্য এটি ব্যবহার করতে হবে be) উদাহরণস্বরূপ।
$results = get_filelist_as_array($dir, true, '', true);
RecursiveDirectoryIterator