-1

foreach 函数没有按我的预期工作:

<?php

$folders = scandir('../Users/');  
foreach($folders as $item):
    if ((substr($item, 0, 1) == '.') || (preg_match("/\.php$/", $item)))
          continue;

     if (is_dir("../Users/$item"))
          $target_folders = @scandir("../Users/$item/processed/");
     foreach($target_folders as $target_item){

         if ((!preg_match("/^[.]/",$target_item))
           || (!is_dir("../Users/$item/processed/$target_item"))){
          if ((substr($target_item, 0, 1) == '.'))
             continue;      
          }
      }
      $srcfile= ("../Users/$item/processed/".$target_item);
      $dstfile= ("processed/".$target_item);
      copy($srcfile, $dstfile);
      unlink($srcfile);
endforeach;
array_map('unlink', glob("processed/*.zip"));
?>

老实说,我不知道它出了什么问题,因为它的副本运行得很好。现在它只是移动其中一个文件而不是移动所有文件。正如我所说,如果您希望我也发布它,那么它的重复作品就可以了,请告诉我。

4

1 回答 1

1

移动逻辑在循环之外,我想这是正确的版本:

$folders = scandir('../Users/');
foreach($folders as $item)
{
    if ((substr($item, 0, 1) == '.') || (preg_match("/\.php$/", $item)))
        continue;
    if (is_dir("../Users/$item"))
    {
        $target_folders = @scandir("../Users/$item/processed/");
        foreach($target_folders as $target_item)
        {
            if ((!preg_match("/^[.]/",$target_item)) || (!is_dir("../Users/$item/processed/$target_item")))
            {
                if ((substr($target_item, 0, 1) == '.'))
                    continue;
                $srcfile= ("../Users/$item/processed/".$target_item);
                $dstfile= ("processed/".$target_item);
                copy($srcfile, $dstfile);
                unlink($srcfile);
            }
        }
    }
}
array_map('unlink', glob("processed/*.zip"));
于 2013-10-09T22:39:54.780 回答