ホームページ > バックエンド開発 > PHPチュートリアル > 「readdir()」を使用すると、PHP コードがファイル名ではなく「1」を返すのはなぜですか?

「readdir()」を使用すると、PHP コードがファイル名ではなく「1」を返すのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-05 10:18:16
オリジナル
770 人が閲覧しました

Why Does My PHP Code Return

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート