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