function head($mark,$p){ $new_arr = array(); $tmp = array(); foreach($mark as $v){ for($i=0;$i<count($v);$i++){ if(is_null($v[$i])){ $tmp = $v; $tmp[$i] = $p; $new_arr[] = $tmp; } } } return $new_arr; } function out($new,$arr){ if(count($arr) == 0){ return $new; }else{ return out(head($new,array_pop($arr)),$arr); } } $arr = array(1,2,3,4,5); $mark = array(); //初始化 for($i=0;$i<count($arr);$i++){ $mark[0][$i] = NULL; } $o = out($mark,$arr); //输出结果 foreach($o as $v){ $str.= join(',',$v)."/r/n"; } echo $str;