遞歸建立目錄spa
方法一code
1 function mk_dir($path){ 2 if(is_dir($path)){ //參數自己是一個目錄 3 return true; 4 } 5 6 if(is_dir(dirname($path))){ //參數的父目錄是一個目錄,則建立目錄 7 return mkdir($path); 8 } 9 10 mk_dir(dirname($path)); 11 return mkdir($path); 12 } 13 14 $path = './a/b/c/d/e'; 15 echo mk_dir($path)?'OK':'Fail';
方法二blog
1 function mk_dir($path){ 2 if(is_dir($path)){ 3 return true; 4 } 5 6 return is_dir(dirname($path))||mk_dir(dirname($path))?mkdir($path):false; 7 } 8 9 $path = './a/aa'; 10 echo mk_dir($path)?'ok':'fail';
遞歸刪除非空目錄:遞歸
1 function deldir($path){ 2 if(!is_dir($path)){ 3 return '不是目錄'; 4 } 5 6 $dh = opendir($path); 7 while(($res = readdir($dh)) !== false){ 8 //排除 . 和 .. 9 if($res == '.' || $res == '..'){ 10 continue; 11 } 12 13 if(!is_dir($path.'/'.$res)){ //是文件,直接刪除 14 unlink($path.'/'.$res); 15 }else{ //是目錄,遞歸調用 16 deldir($path.'/'.$res); 17 } 18 } 19 closedir($dh); 20 rmdir($path); 21 echo "刪除".$path.'<br />'; 22 return 'success'; 23 } 24 25 echo deldir('./aa');
迭代建立目錄io
方法一function
1 function mk_dir($path){ 2 $arr = array(); 3 while(!is_dir($path)){ 4 array_unshift($arr, $path); //Array ( [0] => ./a [1] => ./a/b [2] => ./a/b/c [3] => ./a/b/c/d [4] => ./a/b/c/d/e ) 5 $path = dirname($path); 6 } 7 8 //print_r($arr); 9 10 if(empty($arr)){ 11 return true; 12 } 13 14 foreach ($arr as $v) { 15 mkdir($v); 16 echo '建立'.$v.'成功<br />'; 17 } 18 } 19 20 mk_dir('./a/b/c/d/e');
建立./a成功
建立./a/b成功
建立./a/b/c成功
建立./a/b/c/d成功
建立./a/b/c/d/e成功class
方法二sed
function mk_dir($path){ $arr = array(); while(!is_dir($path)){ array_push($arr, $path); //Array ( [0] => ./a/b/c/d/e [1] => ./a/b/c/d [2] => ./a/b/c [3] => ./a/b [4] => ./a ) $path = dirname($path); } //print_r($arr); if(empty($arr)){ return true; } while(count($arr)){ $tmp = array_pop($arr); mkdir($tmp); echo $tmp.'建立成功<br />'; } } mk_dir('./a/b/c/d/e');
./a建立成功
./a/b建立成功
./a/b/c建立成功
./a/b/c/d建立成功
./a/b/c/d/e建立成功foreach