649
技术社区[云栖]
PHP算法 参数组合,多个分类不同组合列表
算法:多个属性不同的组合/**
* 风.Fox
*/
class test {
//组合
public static $attNew=array();
//源
public static $att=array();
//个数
public static $attCount=0;
/**
* 格式化行
*/
public function formatRow(){
//属性
$att=array(1 =>array(1,2,3,4),
5 =>array(6,7,8,9),
10 =>array(11,12,13)
);
if(is_array($att))foreach($att as $x){
self::$att[]=$x;
}
//属性个数
self::$attCount=count(self::$att);
$this->Combination();
print_r(self::$attNew);
}
/**
* 组合
*/
public function Combination(){
$num = func_num_args();
if($num==0){
call_user_func_array(array($this,__FUNCTION__),array($num));
}else{
$t=func_get_args();
$num =$num-1;
$i=$t[$num];
if(is_array(self::$att))foreach(self::$att[$i] as $r){
if(self::$attCount>0&&self::$attCount==($i+1)){
$a=array();
for($x=0;$x<$num;$x++){
$a[]=$t[$x];
}
$a[]=$r;
self::$attNew[]=$a;
//return $s;
}else{
$arr=array();
for($x=0;$x<$num;$x++){
$arr[]=$t[$x];
}
$arr[]=$r;
$arr[]=$i+1;
if($num>20){
exit('break;');
break;
}
call_user_func_array(array($this,__FUNCTION__),$arr);
}
}
}
}
}
$test=new test();
$test->formatRow();
最后更新:2017-04-03 12:54:00