PHP算法 参数组合,多个分类不同组合列表

来源:互联网 发布:mysql数据备份方案 编辑:程序博客网 时间:2024/05/24 04:12
算法:多个属性不同的组合
/*** 風.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();

原创粉丝点击