递归之无限级分类与创建级联目录

后端开发
2018年06月26日
688

无限级分类

php
$arr =array( array('id' =>1,'area' => '北京', 'pid'=>0), array('id' =>2,'area' => '河北', 'pid'=>0), array('id' =>3,'area' => '保定', 'pid'=>2), array('id' =>4,'area' => '易县', 'pid'=>3), array('id' =>5,'area' => '海淀', 'pid'=>1), ); function tree($arr,$pid=0,$lev=0) { $list = array(); foreach ($arr as $k => $v) { if($v['pid'] == $pid) { $v['lev'] = $lev; $list[] = $v; $list = array_merge($list,tree($arr,$v['id'],$lev+1)); } } return $list; }

创建级联目录

php
function createTree($dir){ if(file_exists($dir)){ return ; } if(!is_dir(dirname($dir))){ createTree(dirname($dir)); } mkdir($dir); return; } //createTree('./e/d/c/b/a/ss')

删除级联目录

php
function delTree($dir,$lev=1){ if(!file_exists($dir)){ echo '目录不存在'; //先判断是否存在 和 是否 文件夹 return ; } if(!is_dir($dir)){ echo '不是文件夹'; return ; } $fh=opendir($dir); while(($dirfile = readdir($fh))!==false){ $files = $dir . '/' . $dirfile; if($dirfile == '.' || $dirfile == '..'){ continue; //continue 跳出当前循环 进入下一个循环 } if(is_file($files)){ unlink($files); echo '删除 ' . str_repeat('-',$lev) . $files . '文件 成功'; } if(is_dir($files)){ delTree($files,$lev+1); } } closedir($fh); //删除前 先关闭资源 rmdir($dir); echo '删除 ' . str_repeat('--',$lev) . $dir . '目录 成功'; }