PHP 递归简单了解

初学php的时候,刚刚认识递归。然后对他进行了小小的总结。适用于小小白

<?php

//1.一个多维数组,单元为数字的变成两倍
//如:array(1, 2, 'b', array(3, 'c', array(4, 5))); 中数字变成两倍
function arr($arr){
	foreach ($arr as $key => $value) {  
		if (is_integer($value)) { 		//is_integer()  也就是 is_int()
		  	$arr[$key] *= 2;  
		//	$arr[$key] = $arr[$key] << 1;
		// 	$value << 1;  //使用$value 是错误的,变量值不变
		 } 
		 if (is_array($value)) {
		 	$arr[$key] = arr($value); //递归函数就自身调用自身,如果发现二位数组中还有数组,那么继续调用自身,把二维数组解析完之后,在继续解析上一级的数组
		 } 
	}
	return $arr;
}
$array = array(1, 2, 'a', array(3, 'b',array(4, 5 ,'c', 'd', array('e', 6))));
print_r(arr($array));


//2.创建连级目录 
//如,给定'./a/b/c/d/e',但是./a不存在,进行递归创建


function t($path){
	if (file_exists($path)) {
		echo 'exists';
		return;	 	
	 } 


	if (!file_exists($path)) {
	 	t(dirname($path));
	 	mkdir(dirname($path));
	 }
	 mkdir($path);
}
$path = './a/b/c/d/e/f';
t($path);


//3.删除一个目录下的所有文件  //明天重做
//比如删除./a目录下的所有文件


function m($path){
		$dh = opendir($path);
	 	while (($row = readdir($dh)) !== false) {
	 		if (!is_dir($path.'/'.$row)) {
	 	 	unlink($path.'/'.$row);
	 	 } 
	 	 else{
	 	 if ($row == '.' || $row == '..') {
	 	 	continue;
	 	}
	 	
	 	 m($path.'/'.$row);
	 	}
	 	}
	 closedir($dh);
	 rmdir($path.'/'.$row);
}
$path = './a';
m($path);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值