• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php递归实例

php 搞代码 4年前 (2022-01-23) 15次浏览 已收录 0个评论

递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

下面举4个递归的实例:

<?php        /*        递归的实例        1、统计数组元素个数        php也可以直接使用count($arr,1) 来计算多维数组的元素的个数        2、统计文件和文件夹数量        3、删除文件或文件夹        用到的系统函数:file_exists()检查目录或者文件是否存在 unlink()删除文件 rmdir()删除目录        4、无限极分类的排序    */    /**    * 递归共计数组元素个数    * @param array $arr 统计的数组    * @return boolean|int  如果失败返回false,成功返回数组的元素个数    */    function conarr($arr){        function funtmp($arr,$sum=0){            if(is_array($arr)){                $sum=count($arr);            }else{                return count($arr);            }            foreach($arr as $k=> $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;}     &#16

5本文来源gao!daima.com搞$代!码#网#

搞代gaodaima码

0;  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教程有兴趣的朋友有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php递归实例
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址