PHP でディレクトリ内のファイル名を取得: '1' の難問を解決する
PHP で、ディレクトリ内のファイル名の取得はよくあるタスクです。ただし、ファイル名が実際の名前ではなく「1」として返されるという予期せぬ問題が発生する場合があります。この難問は、readdir() 関数を is_dir() および opendir() とともに使用するときに発生する可能性があります。
コード:
if (is_dir($log_directory)) { if ($handle = opendir($log_directory)) { while ($file = readdir($handle) !== FALSE) { $results_array[] = $file; } closedir($handle); } }
問題:
の要素を反復処理するとき$results_array では、予期されたファイル名が返されません。代わりに、「1」に置き換えられます。この動作は、readdir() の動作に関する微妙な詳細によるものです。
解決策:
この問題を修正するには、opendir() をバイパスすることをお勧めします。 readdir() を使用し、代わりに glob() を使用します。 glob() は、ディレクトリ内のファイル名を抽出する強力なソリューションを提供する包括的な関数です。
修正されたコード:
foreach(glob($log_directory.'/*.*') as $file) { ... }
この修正されたコードでは、 glob() は、$log_directory 内のファイルを走査し、そのパスを返すために使用されます。その後、各ファイル パスが $file 変数に割り当てられ、さらなる処理や利用が可能になります。
このアプローチは、readdir() の制限を回避し、望ましい結果 ('1 ではなく実際のファイル名のリスト) を提供します。 '.
以上が「readdir()」を使用すると、PHP コードがファイル名ではなく「1」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。