混分:递归算法的使用

浏览:1029 发布日期:2013/08/01 分类:技术分享
什么是递归?
举个例子,有一个结构混乱的数组$arr=array(
    1,
    array('a','2'),
    b,
    array('3',array('2','b'))
);
现在有一个要求,写一个函数,将数组内所有的数字提取出来,保存到一个指定的变量$newarr中。
先想一下,你打算怎么做..................

OK,我们来定义个函数先function findnum($arr){}毫无疑问,我们需要将数组当作一个参数传进函数内部处理,那么函数体内代码改怎么写?foreach?我们又不能确定这个数组到底有多少维。所以这里就提出一个递归的方法,那就是我们对$arr参数进行foreach遍历,当我们发现遍历到的元素还是一个数组时,我们再调用函数本身,将这个元素当作参数传递进去。function findnum($arr){
    $result=array();
    foreach($arr as $v){
        if(is_numeric($v)){
            $result[]=$v;//如果这个元素是数字,直接将它添加到$result数组里
        }else{
            $result=array_merge($result,findnum($v));//递归实现,将结果数组合并
        }
    }
    
    return $result;//将处理结果返回
}
于是这样调用
$newarr=findnum($arr);
我们就可以得到$arr数组中所有数字类型的值。
最佳答案
评论( 相关
后面还有条评论,点击查看>>