关于PHP里递归创建级联目录

使用递归创建一个目录,思路是从最底层判断,判断其子目录,没有的话就判断其父目录,再没有的话就再判断其父的父目录,一直循环下去,知道存在父目录为止,再往下创建代码如下:$p... 使用递归创建一个目录,
思路是从最底层判断,判断其子目录,没有的话就判断其父目录,再没有的话就再判断其父的父目录,一直循环下去,知道存在父目录为止,再往下创建
代码如下:
$path='./1/2/3/4/5/6/7';
function mk_dir($path){
if(is_dir($path)){ /
return true;
}
if(is_dir(dirname($path))){ //判断./1/2/3 已经有次文件目录

return mkdir($path); //这里执行的$path是多少,是整个目录吗,我理解成./1/2/3/4,很疑惑,所以请 //教下大家
}
echo '函数执行<br />';
mk_dir(dirname($path));
return mkdir($path);
}
mk_dir($path);

比如已经有了一个'./1/2/3'的文件目录,当判断到'./1/2/3/4'的时候,就执行return mkdir($path),这里的$path是等于'./1/2/3/4/5/6/7'吗?
展开
 我来答
虎爷可乐
推荐于2016-10-22 · TA获得超过253个赞
知道小有建树答主
回答量:238
采纳率:66%
帮助的人:143万
展开全部
if(is_dir(dirname($path))){  //判断./1/2/3 已经有次文件目录
return mkdir($path);        //这里执行的$path是多少,是整个目录吗,我理解成./1/2/3/4,很疑惑,所以请                                         //教下大家
}

这里的两个 $path 很显然是一样的,你都知道 dirname($path) 是 ./1/2/3 那么很显然 $path 应该是 ./1/2/3/4 了,为什么后面你又要说一个 ./1/2/3/4/5/6/7 呢

这个递归函数写得不好,而且还是多余的,现在 PHP 的 mkdir 函数已经能建多级目录了,只要第三个参数为 true 就可以:

mkdir('./1/2/3/4/5/6/7', 0777, true);
更多追问追答
追问
我这是刚学习PHP,到递归这里感觉有点难,这个只是一个练习题,在实际开发中是不会用到的,想加深下对递归的理解,只是像弄明白这段函数时怎么运算的。我想请教下,到了return mkdir('./1/2/3/4')这里,创建完成后,后面的路径是如何继续创建的,能指点下吗,谢谢!
追答

给你一个递归函数参考,主要是以下几个要点:

// 递归函数示例
function mk_dir($path){
if(is_dir($path)){
// 终止递归条件
return true;
}
// 递归调用开始
if(mk_dir(dirname($path))){
// 符合条件后执行本函数的主要代码
return mkdir($path);
}
// 递归中出现了错误
return false;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式