递归方法实现:
function mergeCopyDir1($source,$destination){
if(is_dir($source) && is_dir($destination)){
$sourceHandle = dir($source);
while($s = $sourceHandle->read()){
if(in_array($s, array('.','..'))){
continue;
}
if(is_dir($source.'/'.$s)){
if(!is_dir($destination.'/'.$s)){
mkdir($destination.'/'.$s);
}
$callee = __FUNCTION__;
$callee($source.'/'.$s,$destination.'/'.$s);
}else{
if(@!copy($source.'/'.$s, $destination.'/'.$s)){
echo 'fail: '.$source.'/'.$s."\n";
}
}
}
return true;
}else{
return false;
}
}非递归方法实现:
function mergeCopyDir2($source,$destination){
$queue = array();
if(is_dir($source) && is_dir($destination)){
array_push($queue, array($source,$destination));
}else{
return false;
}
while(!empty($queue)){
$current = array_shift($queue);
$source = $current[0];
$destination = $current[1];
$sourceHandle = dir($source);
while($s = $sourceHandle->read()){
if(in_array($s, array('.','..'))){
continue;
}
if(is_dir($source.'/'.$s)){
if(!is_dir($destination.'/'.$s)){
mkdir($destination.'/'.$s);
}
array_push($queue, array($source.'/'.$s,$destination.'/'.$s));
}else{
if(@!copy($source.'/'.$s, $destination.'/'.$s)){
echo 'fail: '.$source.'/'.$s."\n";
}
}
}
}
return true;
}
宠物免费领养小程序,欢迎来踩