有这样一道笔试题
有数组a,结构如下
$a=[
0=>1,
'aa'=>2,
3,
4,
'bb'=>[5,[6,7]]
];
要求 将 $a 输出 1,2,3,4,5,6,7
思路:先用foreach遍利数组
$rs=[];
foreach($a as $k=>$v){
$rs[]=$v;
}
但是这里略有问题,当$v为数组的时候,不是预期的结果,因此需要再次遍历,代码就可以这样写:
function get_values($a){
$rs=[];
foreach($a as $k=>$v){
if(is_array($v)){
$rs =array_merge($rs,get_values($v));
}else{
$rs[]=$v;
}
}
return $rs;
}
代码写到这里,问题基本上解决了。注意
$rs =array_merge($rs,get_values($v));
这里不能写作 $rs[]=array_merge($rs,get_values($v)); 这里如果这样写,转换出来的依然和原来一样。