Mendapatkan Nama Fail dalam Direktori dengan PHP: Menyelesaikan Teka-teki '1'
Dalam PHP, mendapatkan nama fail dalam direktori adalah tugas yang biasa dihadapi. Walau bagaimanapun, sesetengah mungkin menghadapi isu yang tidak dijangka di mana nama fail dikembalikan sebagai '1' dan bukannya nama sebenar mereka. Teka-teki ini boleh timbul semasa menggunakan fungsi readdir() dengan is_dir() dan opendir().
Kod:
if (is_dir($log_directory)) { if ($handle = opendir($log_directory)) { while ($file = readdir($handle) !== FALSE) { $results_array[] = $file; } closedir($handle); } }
Masalahnya:
Apabila melelaran melalui elemen $results_array, nama fail yang diharapkan tidak dikembalikan. Sebaliknya, ia digantikan dengan '1'. Tingkah laku ini disebabkan oleh butiran halus berkaitan cara readdir() berfungsi.
Penyelesaian:
Untuk membetulkan isu ini, dinasihatkan untuk memintas opendir() dan readdir() dan gunakan glob() sebaliknya. glob() ialah fungsi komprehensif yang menyediakan penyelesaian yang berkuasa untuk mengekstrak nama fail dalam direktori.
Kod Dibetulkan:
foreach(glob($log_directory.'/*.*') as $file) { ... }
Dalam kod yang disemak ini, glob() digunakan untuk melintasi fail dalam $log_directory, mengembalikan laluannya. Selepas itu, setiap laluan fail diperuntukkan kepada pembolehubah $file, membolehkan pemprosesan atau penggunaan selanjutnya.
Pendekatan ini memintas pengehadan readdir() dan menyampaikan hasil yang dikehendaki – senarai nama fail sebenar, bukan '1 '.
Atas ialah kandungan terperinci Mengapa Kod PHP Saya Mengembalikan '1' Daripada Nama Fail Apabila Menggunakan `readdir()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!