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