<?php
$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);
function getunique($t){
$t2 = array();
//print_r($t);
for($i=0;$i<count($t);$i++){
$count_list = array_count_values($t[$i]);
$flag = 1;
foreach($count_list as $ck=>$cv){
if($cv>1){
$flag = 0;
break;
}
}
if($flag){
sort($t[$i]);
$flag2 = 1;
if($t2){
foreach($t2 as $t2k=>$t2v){
if($t[$i]==$t2v){
$flag2 = 0;
break;
}
}
}
if($flag2){
$t2[] = $t[$i];
}
}
}
return $t2;
}
function getCombinationToString($arr, $m) {
if ($m ==1) {
return $arr;
}
$result = array();
$tmpArr = $arr;
unset($tmpArr[0]);
for($i=0;$i<count($arr);$i++) {
$s = $arr[$i];
$ret = getCombinationToString(array_values($tmpArr), ($m-1), $result);
foreach($ret as $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;
}
?>
结果
Array
(
[0] => a
[1] => b
[2] => c
[3] => d
)
Array
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[0] => a
[1] => c
)
[2] => Array
(
[0] => a
[1] => d
)
[3] => Array
(
[0] => b
[1] => c
)
[4] => Array
(
[0] => b
[1] => d
)
[5] => Array
(
[0] => c
[1] => d
)
)
Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
)
[1] => Array
(
[0] => a
[1] => b
[2] => d
)
[2] => Array
(
[0] => a
[1] => c
[2] => d
)
[3] => Array
(
[0] => b
[1] => c
[2] => d
)
)
Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
[3] => d
)
)
您可以选择一种方式赞助本站
赏