这几天一直在想这个问题:
例如七星彩的复式拆分:2*345*0589*13*78*26*89 拆分成每位是一位数如1*2*3*4*5*6*7 怎么拆
还有双色球的复式拆分:03*07*10*12*13*25*26*30*33|01*11*12 前面是蓝色球选六位 |后是红色球,选一位,怎么拆。
谢谢!
例如七星彩的复式拆分:2*345*0589*13*78*26*89 拆分成每位是一位数如1*2*3*4*5*6*7 怎么拆
还有双色球的复式拆分:03*07*10*12*13*25*26*30*33|01*11*12 前面是蓝色球选六位 |后是红色球,选一位,怎么拆。
谢谢!
function combine(&$a,$idx){
if($idx>=count($a)-1)
return $a[$idx];
else{
$low_b=combine($a,$idx+1);
$b=array();
foreach($a[$idx] as $ch){
foreach($low_b as $low_arr){
$b[]=array_merge(array($ch),is_array($low_arr)? $low_arr: array($low_arr));
}
}
return $b;
}
}$arr=explode('*','2*345*0589*13*78*26*89');
foreach ($arr as $val){
$com[]=str_split($val,1);
}
$b=combine($com,0);
print_r($b);
<?php
function combine(&$a,$idx){
if($idx>=count($a)-1)
return $a[$idx];
else{
$low_b=combine($a,$idx+1);
$b=array();
foreach($a[$idx] as $ch){
foreach($low_b as $low_arr){
$b[]=array_merge(array($ch),is_array($low_arr)? $low_arr: array($low_arr));
}
}
return $b;
}
}
$arr=explode('|','03*07*10*12*13*25*26*30*33|01*11*12');
$com[]=array($arr[0]);
$com[]=explode('*',$arr[1]);$b=combine($com,0);
print_r($b);
函数是找来的,不知道上面是不是你要的效果
function combine(&$a,$idx){
if($idx>=count($a)-1)
return $a[$idx];
else{
$low_b=combine($a,$idx+1);
$b=array();
foreach($a[$idx] as $ch){
foreach($low_b as $low_arr){
$b[]=array_merge(array($ch),is_array($low_arr)? $low_arr: array($low_arr));
}
}
return $b;
}
}
//排列组合 $arr里取$m个
function foo($arr,$m){
$result = array();
if ($m ==1)
return $arr;
if ($m == count($arr)){
$result[] = implode(',' , $arr);
return $result;
}
$temp_firstelement = $arr[0];
unset($arr[0]);
$arr = array_values($arr);
$temp_list1 = foo($arr, ($m-1));
foreach ($temp_list1 as $s){
$s = $temp_firstelement.','.$s;
$result[] = $s;
}
unset($temp_list1);
$temp_list2 = foo($arr, $m);
foreach ($temp_list2 as $s){
$result[] = $s;
}
unset($temp_list2);
return $result;
}//双色球
$arr1=explode('|','03*07*10*12*13*25*26*30*33|01*11*12');
$blue=explode('*',$arr1[0]);
$red=explode('*',$arr1[1]);
$com1[]=foo($blue,6);
$com1[]=foo($red,1);$b1=combine($com1,0);
$b1=array_map(function($a){return implode('|',$a);},$b1);
print_r($b1);//七星彩
$arr2=explode('*','2*345*0589*13*78*26*89');
foreach ($arr2 as $val){
$com2[]=str_split($val,1);
}
$b2=combine($com2,0);
$b2=array_map(function($a){return implode('*',$a);},$b2);
print_r($b2);