递归小练习
写一个函数,输入为一个嵌套数组,返回其平面形式,如:
输入:[1, [2, 3], [4, [5, 6]], [[[7]]]]
输出:[1, 2, 3, 4, 5, 6, 7]
不可以依赖全局变量,静态变量。
function flat($array) { $room = &$array[key($array)]; if (!is_array($room)) { $room = [$room]; } next($array); while (list($k, $v) = each($array)) { if(is_array($v)){ if(count($v) == count($v,1)){ $v = array_values($v); }else{ $v = flat($v); } } $room = array_merge_recursive($room, $v); unset($array[$k]); } return $room; } $array = [ 1, [2, 3], [4, [5, 6]], [[[7]]] ]; print_r(flat($array));
注意each函数在PHP7.2开始被拒绝了。
登录后可发表评论
06月25日 17:10
06月25日 16:54
希望博主多多更新算法,共勉!