时间:2021-07-01 10:21:17 帮助过:17人阅读
下面举4个递归的实例:
$v){
if(is_array($v)){
$sum += funtmp($v,$sum);
}
}
return $sum;
}
return funtmp($arr);
}
// $arr = array(1,2,3,4,array(1,2,3,array(0,3)));
// echo conarr($arr).'
';
// echo count($arr,1);
/**
* 递归统计指定目录的子文件的个数和文件夹个数
* @param $dirname string 目录路径
* @return array|boolean 返回包含子文件个数和文件夹个数的数组,失败返回false
*/
function condir($dirname,$data = array('dirnum'=>0,'filenum'=>0)){
if(!is_dir($dirname)){
return false;
}
$dir = opendir($dirname); //打开句柄
readdir($dir);//读取点
readdir($dir);//读取点
while($filename = readdir($dir)){
$newfile = $dirname.'/'.$filename;//拼接子文件名
if(is_dir($newfile)){
$data['dirnum']++;
$data['dirnum']+=condir($newfile)['dirnum'];
$data['filenum']+=condir($newfile)['filenum'];
}else{
$data['filenum']++;
}
}
return $data;
}
//$a = condir('C:\wamp\www\test');
//var_dump($a);
/**
* 删除文件或者文件夹
* @param string $dirname 文件路径
* @return boolean 删除成功返回true,失败返回false
*/
function delDir($dirname){
if(!file_exists($dirname)){return false;}
if($dir = opendir($dirname)){
while($filename = readdir($dir)){
if($filename !="."&& $filename !='..'){
$subFile = $dirname.'/'.$filename;
if(is_dir($subFile)){
delDir($subFile);
}
if(is_file($subFile)){
unlink($subFile);
}
}
}
closedir($dir);
rmdir($dirname);
}
if(!file_exists($dirname)){
return true;
}else{
return false;
}
}
//echo delDir('C:\wamp\www\test');
//无限极分类排序,父类后跟子类
function getlist($cate,$pid=0,$html="------",$i=0){
$i++;
$list = array();
foreach($cate as $val){
if($val['pid']==$pid){
$val['html']=str_repeat($html,$i-1);
$list[]=$val;
$list = array_merge($list,getlist($cate,$val['id'],$html,$i));
}
}
return $list;
}
?>以上就介绍了php递归实例,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。