码迷,mamicode.com
首页 > 编程语言 > 详细

PHP 多个一维数组排列组合的所有可能

时间:2016-03-03 19:22:50      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:

<?php
    // auth bin.chen 525945448


    $a = array(A,B,Y);
    $b = array(C,D,P);
    $c = array(E,F,G);
    $f = array(P,U,M);
    $d = array($a,$b,$c,$f );
    //计算每一个数组的长度
    $len = 1;
    $arrLen = count($d); //需要排列数组有多少个
    $recIndex = null; //记录当前该取的位置
    foreach ($d as $key => $value) {
        $lenRec[] = count($value);
        $len = $lenRec[$key]*$len;
        $recIndex[] = 0;//第一次全部取第0个
    }
    //算出% 的值
    $count = 1;
    foreach ($lenRec as $key => $value) {
        $moduloVal = 1;
        
        if($arrLen == $count){
                $modulo[] = count($d[$arrLen-1]); //等于最后一个的长度
        }else{
            $count_1 = 1;
            foreach ($lenRec as $index => $item) {
                $count_1 > $count && $moduloVal = $moduloVal*$item;
                $count_1 ++;
            }
            $modulo[] = $moduloVal;
        }
        $count ++;//为了防止$d key是有值的 不是自然序列 需要计数
    }
    $i = 1;

    while ( $i <= $len) {
        $html = ‘‘;
        $count_2 = 0;// 取模
        $temp = ‘‘;
        foreach ($d as $value) {
               $html .= $value[$recIndex[$count_2]%$lenRec[$count_2]];
               $count_2 ++;
        }

        echo $html."<br>";
        foreach ($modulo as $key => $value) {
            if($i%$value == 0 && $key < $arrLen - 1 ){
                $recIndex[$key] = $recIndex[$key] +1;   
            } 
            if($key == $arrLen - 1){
                 if($i%$value == 0){
                        $recIndex[$key] = 0;  
                 }else{
                    $recIndex[$key] = $recIndex[$key] +1;  
                 }
            } 
        }
        $i ++;
        //改变获取的位置
    }

?>

 

PHP 多个一维数组排列组合的所有可能

标签:

原文地址:http://www.cnblogs.com/bin-pureLife/p/5239673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!