举个例子,有一个结构混乱的数组
$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数组中所有数字类型的值。
最佳答案