Tentukan Kekosongan Direktori dalam PHP
Anda ingin menyemak sama ada direktori kosong menggunakan PHP tetapi skrip semasa anda memberikan hasil yang tidak konsisten. Mari kita periksa masalah dan teroka penyelesaian yang boleh dipercayai.
Kod anda menggunakan glob untuk mendapatkan semula fail dalam direktori. Walau bagaimanapun, glob mempunyai had: ia tidak dapat mengesan fail tersembunyi bermula dengan titik (cth., ".gitignore"). Akibatnya, skrip anda mungkin melaporkan direktori sebagai kosong walaupun terdapat fail tersembunyi.
Untuk mengatasi had ini, anda boleh menggantikan glob dengan scandir. scandir membaca semua fail dalam direktori, termasuk fail tersembunyi. Anda boleh mengubah suai kod anda seperti berikut:
<code class="php">$dir = '/assets/'.$pid.'/v'; if (is_dir_empty($dir)) { echo "the folder is empty"; }else{ echo "the folder is NOT empty"; } function is_dir_empty($dir) { return (count(scandir($dir)) == 2); }</code>
Fungsi is_dir_empty mengira bilangan fail dalam direktori dan membandingkannya dengan 2 (mewakili "." dan ".."). Jika kiraan ialah 2, direktori itu kosong.
Sebagai alternatif, anda boleh menggunakan opendir dan readdir untuk menggelungkan direktori dan menyemak fail tidak tersembunyi:
<code class="php">function dir_is_empty($dir) { $handle = opendir($dir); while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != "..") { closedir($handle); return false; } } closedir($handle); return true; }</code>
Dengan menggunakan ini kaedah, anda boleh menentukan dengan tepat sama ada direktori kosong, walaupun ia mengandungi fail tersembunyi. Selain itu, pertimbangkan untuk menggunakan nilai boolean dan bukannya perkataan ("Kosong" atau "Tidak kosong") untuk kod yang lebih jelas dan ringkas.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Dengan Tepat sama ada Direktori Kosong dalam PHP, Termasuk Fail Tersembunyi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!