Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menyenaraikan Semua Fail dan Folder secara Rekursif dalam Direktori Menggunakan PHP, Mengelakkan Gelung Infinite dan Entri Pendua?
Menentukan Fail dan Folder dalam Direktori Menggunakan Fungsi PHP Rekursif
Perbincangan ini menyiasat kaedah untuk melintasi fail dan subdirektori direktori secara rekursif.
Yang disediakan kod:
function getDirContents($dir){ $results = array(); $files = scandir($dir); foreach($files as $key => $value){ if(!is_dir($dir. DIRECTORY_SEPARATOR .$value)){ $results[] = $value; } else if(is_dir($dir. DIRECTORY_SEPARATOR .$value)) { $results[] = $value; getDirContents($dir. DIRECTORY_SEPARATOR .$value); } } } print_r(getDirContents('/xampp/htdocs/WORK'));
Dilema:
Kod yang diberikan mempunyai fungsi rekursif untuk meneroka direktori dan fail. Walau bagaimanapun, ia gagal untuk mengabaikan '.' dan '..', menghasilkan gelung yang berpotensi tidak berkesudahan. Selain itu, setiap fail dan direktori diduplikasi dalam keputusan.
Jawapannya:
Untuk menangani isu ini, kami boleh mengubah suai fungsi seperti berikut:
function getDirContents($dir, &$results = array()) { $files = scandir($dir); foreach ($files as $key => $value) { $path = realpath($dir . DIRECTORY_SEPARATOR . $value); if (!is_dir($path)) { $results[] = $path; } else if ($value != "." && $value != "..") { getDirContents($path, $results); $results[] = $path; } } return $results; }
Kod ini:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyenaraikan Semua Fail dan Folder secara Rekursif dalam Direktori Menggunakan PHP, Mengelakkan Gelung Infinite dan Entri Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!