关于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'吗? 展开
思路是从最底层判断,判断其子目录,没有的话就判断其父目录,再没有的话就再判断其父的父目录,一直循环下去,知道存在父目录为止,再往下创建
代码如下:
$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'吗? 展开
1个回答
展开全部
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询