Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php melaksanakan traversal folder

php melaksanakan traversal folder

PHPz
PHPzasal
2023-05-29 16:39:393105semak imbas

PHP ialah bahasa pengaturcaraan yang sangat popular yang boleh digunakan untuk melaksanakan pelbagai operasi. Antaranya, merentasi folder dan mendapatkan maklumat fail di dalamnya adalah operasi yang kerap diperlukan. Dalam artikel ini, saya akan menerangkan cara melaksanakan traversal folder dalam PHP.

  1. fungsi opendir()

fungsi opendir() ialah fungsi yang digunakan oleh PHP untuk membuka folder semasa memanggil fungsi ini, anda perlu lulus dalam laluan folder sebagai parameter. Selepas folder berjaya dibuka, kandungan folder boleh dibaca melalui fungsi readdir().

Kod sampel:

$dir = './test';  //文件夹路径
$handle = opendir($dir);  //打开文件夹
while ($file = readdir($handle)) {  //循环读取所有文件
    if ($file != "." && $file != "..") {  //排除"."和".."两个特殊的文件夹
        echo $file."<br>";  //输出文件名
    }
}
closedir($handle);  //关闭文件夹

Dalam kod sampel di atas, saya membuka folder bernama "test" dan membaca semua nama fail dalam folder dalam satu gelung, Dan abaikan dua folder khas " ." dan "..".

  1. fungsi is_dir() dan traversal rekursif

Jika anda ingin melintasi semua subdirektori dan fail dalam direktori, kami boleh menggunakan kaedah rekursif. Semasa proses traversal, kita juga perlu menentukan sama ada traversal semasa ialah folder atau fail Kita boleh menggunakan fungsi is_dir() untuk menentukan.

Kod sampel:

function scanDir($dir){
    if(!is_dir($dir)){
        echo '不是一个有效的文件夹路径';
        return;
    }
    $handle = opendir($dir);  //打开文件夹
    while($file = readdir($handle)){  //循环读取所有文件
        if($file == '.' || $file == '..'){  //忽略掉 ".",".." 特殊文件夹
            continue;
        }
        $path = $dir.'/'.$file;  //当前文件或文件夹的完整路径
        if(is_dir($path)){  //如果是一个文件夹
            echo '<b>'.$file.'</b><br>';  //输出文件夹名称
            scanDir($path);  //递归遍历子文件夹
        }else{  //如果是一个文件
            echo $file.'<br>';  //输出文件名称
        }
    }
    closedir($handle);  //关闭文件夹
}

Dalam kod sampel di atas, saya telah menentukan fungsi scanDir() yang menerima laluan folder sebagai parameter. Di dalam fungsi, saya mula-mula menentukan sama ada laluan masuk ialah folder. Jika ia bukan folder, kembalikan terus.

Seterusnya, saya membuka folder dan menggelung fail dan folder di dalamnya. Apabila melelaran ke folder, saya mengeluarkan nama folder dan memanggil fungsi scanDir() secara rekursif untuk melelaran melalui subfolder. Apabila lelaran ke fail, saya hanya mengeluarkan nama fail.

  1. fungsi scandir()

PHP juga menyediakan fungsi yang sangat mudah scandir() yang boleh digunakan untuk mendapatkan semua fail dan fail dalam folder sekaligus Nama folder. Tidak seperti fungsi opendir(), fungsi ini mengembalikan tatasusunan yang mengandungi nama semua subfolder dan fail.

Kod sampel:

$dir = './test';  //文件夹路径
$files = scandir($dir);  //获取文件夹下所有文件和文件夹名称
foreach($files as $file){  //循环遍历
    if($file == '.' || $file == '..'){  //忽略掉 ".",".." 特殊文件夹
        continue;
    }
    echo $file.'<br>';  //输出文件或文件夹名称
}

Dalam kod sampel di atas, saya memanggil fungsi scandir() untuk mendapatkan semua nama fail dan folder di bawah folder, dan menggelungkan melalui tatasusunan. Begitu juga, saya mengabaikan dua folder khas "." dan ".." dan hanya mengeluarkan nama folder dan fail.

Ringkasan

Dalam artikel ini, saya memperkenalkan cara melaksanakan traversal folder dengan PHP dan menunjukkan tiga cara berbeza. Melalui fungsi opendir() dan readdir(), kita boleh menggelungkan semua fail dan folder dalam folder dan melaksanakan operasi yang sepadan dengan menilai jenis fail. Melalui rekursif traversal, kita boleh melintasi semua subdirektori dan fail dalam direktori. Melalui fungsi scandir(), kami memperoleh semua subfolder dan nama fail di bawah folder sekaligus. Jika anda perlu mengulangi folder dalam PHP, saya harap artikel ini dapat memberi anda sedikit rujukan.

Atas ialah kandungan terperinci php melaksanakan traversal folder. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:php set urlArtikel seterusnya:php set url