删除目录和子目录


Deleting directories and sub-directories

我对我创建的函数有一个小问题。它应该删除每个目录和子目录(当然还有其中的文件),但它绝对不做任何事情!

function deletedirandfiles($data, $username){
                //$data correspond au chemin clé, cad à images/users
                $dir = opendir($data); // On définit le répertoire dans lequel on souhaite travailler.
                while (false !== ($fichier = readdir($dir))) // On lit chaque fichier du répertoire dans la boucle.
                {
                    if (($fichier == '.') OR ($fichier == '..') OR ($fichier == '.DS_Store') OR ($fichier != $username)){
                    // On ne fait rien pour ne pas les afficher
                    }
                    elseif (is_file($data.'/'.$fichier)){
                        unlink($data.'/'.$fichier);
                    }
                    elseif (is_dir($data.'/'.$fichier)){
                        $foldertoworkin = "$data/$fichier";
                        deletedirandfiles($foldertoworkin, $username); //On lance la recursivité en reappelant la fonction
                        rmdir($data.'/'.$fichier);
                    }
                    else{
                    }
                }
                closedir($dir);
}

在这种情况下:$data = "图像/用户",$username = 文件夹的名称。

知道为什么它不起作用吗?

与隐藏文件相关的操作系统无关解决方案可以是:

public static function delTree($dir) { 
    $files = array_diff(scandir($dir), array('.','..')); 
    foreach ($files as $file) { 
      (is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file"); 
    } 
    return rmdir($dir); 
} 

您可以在以下位置找到更多示例: http://us3.php.net/rmdir

问候。