如果用php删除,只有递归了,没有什么好办法,
但是楼主可以用:exec('rm -rf folder1'),也就是直接调用linxu命令来实现

解决方案 »

  1.   

    我也知道要用递归,可是没有什么思路.
    to:  screend(流浪小子):偶还要删除数据库中的dd
      

  2.   

    /**
    *才写的--获取删除的数据数组
    *可惜测试不同
    * wdir 是要删除的文件的路径
    *$sql 是我写的数据库类
    *把所有的 ' $sql-> '换成mysql_就可以测试
    **/
    //检查是否有儿子
    function check_son($del_id){
      global $sql;
      $query = "select count(*) from folder where f_parent ='".$del_id."'";
      $rst = $sql->query($query);
      $row = $sql->fetch_row($rst);
      $qy = "select count(*) from document where d_parent ='".$del_id."' ";
      $ret = $sql->query($qy);
      $rw = $sql->fetch_row($ret);
      if(($row[0]+$rw[0])>0){
        $back = 1;
      }else{
        $back = 0;
      }
      return $back;
    }
    //要删除的文件夹的数组
    function  folder_ar($id,$wdir){
        global $sql;
        $query = "select * from foler where f_parent = '$id'";
        $back = array();
        $rst = $sql->query($query);
        while($row = $sql->fetch_array($rst)){
           $wdir = $wdir."/".$row[f_name];
           array_push($row,"wdir=>$wdir");
           $back[] = $row;
        }
        return $back;
    }
    //要删除的文件的数组
    function  doc_ar($id,$wdir){
        global $sql;
        $query = "select * from document where f_parent = '$id'";
        $back = array();
        $rst = $sql->query($query);
        while($row = $sql->fetch_array($rst)){
           $wdir = $wdir."/".$row[d_name];
           array_push($row,"wdir=>$wdir");
           $back[] = $row;
        }
        return $back;
    }//要删除的文件及文件夹数据--数组
    function del_ar($id,$wdir){
       global $sql;
       static $del_ar = array();
       static $i = 0;
       if(check($del_id)){
         $folder =  folder_ar($id,$wdir);
         $doc =  doc_ar($id,$wdir);
         $dl_ar[$i][folder]  =  $folder;
         $dl_ar[$i][doc]  =    $doc;
         foreach($folder as $k=>$v){
           del_ar($v[f_id],$v[wdir]);
         }
         foreach($folder as $key=>$val){
           del_ar($val[f_id],$val[wdir]);
         }
       }
       $i++;
       return $dl_ar;
    }
      

  3.   

    看来上面的程序.只是语法错了点
    逻辑---只是 wdir 错了.
      

  4.   

    <?phpfunction zRmDir($path) 
    {
    $directory = dir($path);
    while($entry = $directory->read()) {
    if ($entry != "." && $entry != "..") {
    if (Is_Dir($path."/".$entry)) {
    zRmDir($path."/".$entry);
    } else {
       @UnLink ($path."/".$entry);
    }
    }
    }
    $directory->close();
    @RmDir($path);
    }zRmDir("ttt");
    ?>zRmDir()函数可以删除目录及目录下面的所有下级目录与文件;测试成功。
    我的目录结构如下:ttt
      |--tt.txt
      |--bbbbbb
           |--dd.txt
           |--gggggggggggggggg执行后,全部删除。
      

  5.   

    如果能执行exec,最好调用系统命令,效率高的多。