ホームページ >バックエンド開発 >PHPチュートリアル >PHP でディレクトリとその内容を再帰的に削除するにはどうすればよいですか?

PHP でディレクトリとその内容を再帰的に削除するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-03 20:31:10623ブラウズ

How Can I Recursively Delete Directories and Their Contents in PHP?

ディレクトリとその内容の削除

rmdir() を使用してディレクトリを削除しようとすると、ディレクトリ内の既存のファイルによるエラーが発生します。共通の問題。幸いなことに、この制限を回避する方法がいくつかあります。

方法 1: 再帰的削除

ターゲット フォルダーを削除する前に、そのすべてのファイルとサブフォルダーを再帰的に削除します。サンプル実装は次のとおりです:

function deleteDir(string $dirPath): void {
    if (!is_dir($dirPath)) {
        throw new InvalidArgumentException("'$dirPath' must be a directory");
    }
    $dirPath .= '/';
    $files = glob($dirPath . '*', GLOB_MARK);
    foreach ($files as $file) {
        if (is_dir($file)) {
            deleteDir($file);
        } else {
            unlink($file);
        }
    }
    rmdir($dirPath);
}

方法 2: RecursiveIterator (PHP 5.2 )

RecursiveIterator を利用すると、再帰的削除プロセスを簡素化できます:

function removeDir(string $dir): void {
    $it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
    $files = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST);
    foreach($files as $file) {
        if ($file->isDir()){
            rmdir($file->getPathname());
        } else {
            unlink($file->getPathname());
        }
    }
    rmdir($dir);
}

雇用することでこれらの方法を使用すると、ディレクトリとその埋め込みファイルを効果的に削除できます。

以上がPHP でディレクトリとその内容を再帰的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。