0

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

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 = "images/users" 和 $username = 文件夹的名称。

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

4

1 回答 1

0

适用于隐藏文件的操作系统无关解决方案可以是:

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

问候。

于 2013-11-04T21:16:21.847 回答