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"));
?>
老实说,我不知道它出了什么问题,因为它的副本运行得很好。现在它只移动其中一个文件而不是移动所有文件。正如我所说的那样,如果你希望我发布它的重复版,请告诉我。
答案 0 :(得分: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"));