1.递归调用方式
function createFolder($path)
{
if(!file_exists($path))
{
ctreateFolder(dirname($path));
mkdir($path,0700);
}
}
2.数组方式
-----------------参考1--------------------------------
<?php
$cdir="a/b/c/d"; //数据库里存储的字段
//判断文件夹是否存在,并创建文件夹
if(strpos($cdir,"/")>0){ //判断内容里是否含有"/"
$arr=explode("/",$cdir); //将内容以“/”分割创建成数组
$ycj="../";//定义一个变量。指定站点根目录
foreach($arr as $key=>$value){//循环输出数组,
$$key=$value;//值付给变量$value
if ($value!=""){ //如果值不为空(因为数组的最后一个值是空的)
if(!file_exists("".$ycj.$value."")){ //如果没有这个文件夹
mkdir("".$ycj.$value."/"); //创建这个文件夹
}$ycj=$ycj.$value."/";//给$ycj重新赋值
}
}
echo $ycj."文件夹已创建<br>";//最后输出文件夹路径
}
//已创建文件夹
?>
-----------------参考2--------------------------------
php函数mkdir参数与描述
path 必需。规定要创建的目录的名称。
mode 必需。规定权限。默认是 0777。
recursive 必需。规定是否设置递归模式。
context 必需。规定文件句柄的环境。Context 是可修改流的行为的一套选项。
说明
php函数mkdir 尝试新建一个由 path 指定的目录。
默认的 mode 是 0777,意味着最大可能的访问权。
php默认的mkdir一次只能创建一层目录,如果在当前目录下创建一个div/css/layout 的目录就需要逐层逐层的先创建div,再创建div/css 再创建 div/css/layout,然而我们希望能让程序自动帮我们完成这个过程。
其实思路也很简单,1.先判断 div目录是否存在,不存在则创建;2.判断子目录 div/css 是否存在,不能存在则创建,3.在第二步中以子目录作为参数递归调用函数本身。也可以按相反顺序来,1.先判断最底层目录div/css/layout是否存在;2.判断div/css/layout的上层目录div/css是否存在,不存在则以div/css作为参数递归进行。。
下面是php函数mkdir的程序代码:
function mkdirs($dir)
{
if(!is_dir($dir))
{
if(!mkdirs(dirname($dir))){
return false;
}
if(!mkdir($dir,0777)){
return false;
}
}
return true;
}
mkdirs('div/css/layout');
同样的思路,php用rmdir和unlink递归删除多级目录的代码:
function rmdirs($dir)
{
$d = dir($dir);
while (false !== ($child = $d->read())){
if($child != '.' && $child != '..'){
if(is_dir($dir.'/'.$child))
rmdirs($dir.'/'.$child);
else unlink($dir.'/'.$child);
}
}
$d->close();
rmdir($dir);
}
以上代码示例就是php函数mkdir实现创建多级目录的具体方法。