关于连级目录的创建、删除、打印

使用递归创建、删除和打印连级目录。以及使用迭代创建连级目录。适用于新手操作。在实际项目中并不需要这么做。仅仅是为了巩固基本知识。

使用递归创建连级目录

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

	 //如果父目录存在,我直接创建
	 //如果父目录不存在,你帮我创建父目录后,我再创建
	 //因此,我最后都要创建目录,要么父目录存在,要么你帮我创建目录

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

}

echo mk_dir('./y/x/z/w/v/u')?'OK':'fail';

使用递归删除连级目录

function deldir($path){

	//不是目录,直接返回
	if (!is_dir($path)) {
		return false;
	}

	$dh = opendir($path);
	while(($row = readdir($dh)) !== false) {
		if ($row == '.' || $row == '..') {
			continue;
		}
		//判断是否是普通文件
		if (!is_dir($path.'/'.$row)) {
			unlink($path.'/'.$row); //删除子文件
		}else{
			deldir($path.'/'.$row); //再次利用递归删除目录
		}
	}

	//关闭目录
	closedir($dh);
	//删除目录
	rmdir($path);

	echo '删除'.$path.'<br />';
	return true;
	

}

echo deldir('./a');
/**
显示结果: 
删除./a/b/c/d/e/f
删除./a/b/c/d/e
删除./a/b/c/d
删除./a/b/c
删除./a/b
删除./a
1
**/


打印连级目录

function recdir($path, $lev=1){
	$dh = opendir($path);
	while (($row = readdir($dh)) !== false) {
	 	if ($row =='.' || $row == '..') {
			continue;
		}		
		
		echo str_repeat('  ',$lev).$row.'<br />';

	
		//如果$row还是目录	
		if (is_dir($path.'/'.$row)) {
			recdir($path.'/'.$row, $lev+1); //再次调用这个函数
		}
		

	 } 
	 closedir($dh);
}

recdir('./');

使用迭代创建连级目录

function mk_dir($path){
	$arr = array();
	while (!is_dir($path)) {
		array_unshift($arr, $path);
		$path = dirname($path);
	}
//	return $arr;  //由于我没有写返回值,所以z/x/c没有显示出来
	print_r($arr);

	if (empty($arr)) {
		return true;
	}

	foreach ($arr as $v) {
		echo "创建".$v.'成功';
		mkdir($v);
	}

}

mk_dir('./a/b/c/d/e/f/g');
//print_r(mk_dir('./z/x/c'));




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值