代码如下 | 复制代码 |
$arr=array('a','b','c','d'); $result=array(); $t= getCombinationToString($arr, 1); print_r($t); $t= getCombinationToString($arr, 2); $t2= getunique($t); print_r($t2); $t= getCombinationToString($arr, 3); $t2= getunique($t); print_r($t2); $t= getCombinationToString($arr, 4); $t2= getunique($t); print_r($t2);
functiongetunique($t){ $t2=array(); //print_r($t); for($i=0;$i $count_list=array_count_values($t[$i]); $flag= 1; foreach($count_listas$ck=>$cv){ if($cv>1){ $flag= 0; break; } } if($flag){ sort($t[$i]); $flag2= 1; if($t2){ foreach($t2as$t2k=>$t2v){ if($t[$i]==$t2v){ $flag2= 0; break; } } } if($flag2){ $t2[] =$t[$i]; } } } return$t2; } functiongetCombinationToString($arr,$m) { if($m==1) { return$arr; } $result=array(); $tmpArr=$arr; unset($tmpArr[0]); for($i=0;$i $s=$arr[$i]; $ret= getCombinationToString(array_values($tmpArr), ($m-1),$result); foreach($retas$row) { //$result[] = $s . $row; $temp=array(); $temp[] =$s; if(is_array($row)){ $temp=array_merge($temp,$row); }else{ $temp[] =$row; } sort($temp); $result[] =$temp; } } return$result; } ?> |