ディレクトリとその内容の削除
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 サイトの他の関連記事を参照してください。