您的位置:首页 > 编程语言 > PHP开发

php-递归创建级联目录

2016-07-18 22:29 435 查看
方法一:

function mk_dir($path_arr,$root){

if(!empty($path_arr)){

    static $path;//每次保存上次调用的值

$path .= '/'.$path_arr[0];

if(!is_dir($path)){

if( mkdir($root.$path)){

$flag = true;

}else{

$flag = false;

} }

array_shift($path_arr);//将数组开头的单元移出数组

mk_dir($path_dir,$root);

return $flag;

}

}

$dir = './a/b/c/d/e/f';

if(is_dir($dir)){

echo $dir,'已经是目录了';

exit;

}

$dir_arr = explode('/',$dir);//将路径分割成数组

$root = array_shift($dir_arr);//取得. 或者 .. 或者 绝对路径的最上级目录

echo mk_dir($dir_arr,$root)?'ok':'fail';

方法二:

function mk_dir($path){

//最好的情况就是$path 以及存在

if(is_dir($path)){return true;}

//再好点的情况就是$path的上级目录已经存在 则 直接创建之

if(is_dir(dirname($path)))

          return mkdir($path);

//最坏的情况就是$path的上级目录不存在,则先递归创建上级目录

mk_dir(dirname($path));

return mkdir($path);

}

echo mk_dir('./aa/bb/cc/dd')?'ok':'fail';

方法三:

function mk_dir($path){

if(is_dir($path)){return true;}

/*

          创建 $path的前提是它的上级目录存在

          上级目录:已经存在 或者 我们先创建好上级目录

*/

return is_dir(dirname($path)) || mk_dir(dirname($path))?mkdir($path):false;

}

echo mk_dir('./aa/bb/cc/dd')?'ok':'fail';

方法四:

使用 php 5 版本以上的 mkdir()

例如 mkdir('../a/b/c/d',0777,true);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: