php pb中的递归目录

时间:2014-02-10 04:19:13

标签: php recursion directory

我不明白我的代码中的问题在哪里。我试图在目录上实现另一个副本,但代码循环

感谢您的帮助

例如,我想将法语目录复制到名为spanish

的新目录中

ps:只是信息:在法语目录中还有目录和文件         那里的结果是:

french 
english 
spanish
    ----->french
    ----->english
    ----->spanish
    --------->french
    --------->english
    --------->spanish 
    ------------>french
    ------------>english
    ------------>spanish 
                 ...

正确的结果是:

french 
english 
spanish

代码:

function osc_smartCopy($source, $dest) {
    mkdir($dest, 0755);
    foreach (
    $iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
    RecursiveIteratorIterator::SELF_FIRST) as $item) {
        if ($item->isDir()) {
            mkdir($dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName());
        } else {
            copy($item, $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName());
        }
    }
}

//default language drectory ==> French
          $lng_default_directory_query = osc_db_query("select directory
                                                       from " . TABLE_LANGUAGES . "
                                                       where code  = '" . DEFAULT_LANGUAGE . "'
                                                      ");
          $lng_default_directory = osc_db_fetch_array($lng_default_directory_query);
          $lng_default_directory = $lng_default_directory['directory'];

// ---------------------------------------------
// -- Copy the new language in admin directory  
// ---------------------------------------------  
//$directory ==>  spanish

          $source = DIR_FS_ADMIN . DIR_WS_LANGUAGES . $lng_default_directory;
          $dest = DIR_FS_ADMIN . DIR_WS_LANGUAGES . $directory;

          print_r($source);
          print_r('<br />'.$dest);

          if (is_dir($source)) {
            osc_smartCopy($source, $dest);
          } else {
            echo 'NO EXIST';
          }
// ---------------------------------------------
// copy the files in the language admin directory
// --------------------------------------------- 
          $source_admin = DIR_FS_ADMIN . DIR_WS_LANGUAGES . $lng_default_directory.'.php';
          $dest_admin = DIR_FS_ADMIN . DIR_WS_LANGUAGES . $directory.'.php';

          if (file_exists($source_admin)) {
            copy($source_admin, $dest_admin);
            chmod($dest_admin, 0644);
          } else {
            osc_redirect(osc_href_link(FILENAME_LANGUAGES));
          }

0 个答案:

没有答案