//字符串组合函数
function StrCombinations($arr, $len=0,&$res, $str=""){
$arr_len = count($arr);
if($len == 0){
$res[] = $str;
}else{
for($i=0; $i<$arr_len; $i++){
$tmp = array_shift($arr);
if (empty($str)){
StrCombinations($arr, $len-1, $res,$tmp);
}else{
StrCombinations($arr, $len-1, $res,$str."|".$tmp);
}
array_push($arr, $tmp);
}
}
}
调用:
//比如:要对字符串('1120','1166','1118')3个一组进行组合,
//首先将字符创封装成数组;
$arr = array('1120','1166','1118');
//调用函数
StrCombinations($arr, 3,$result);
//输出组合结果
print_r($result);
/*
Array
(
[0] => 1120|1166|1118
[1] => 1120|1118|1166
[2] => 1166|1118|1120
[3] => 1166|1120|1118
[4] => 1118|1120|1166
[5] => 1118|1166|1120
)
*/
这里组合方法的核心是递归,效率很低。如有更好的解决方案,希望大家能分享!