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

Posted 鱼尾纹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 多个一维数组排列组合的所有可能相关的知识,希望对你有一定的参考价值。

<?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 多个一维数组排列组合的所有可能的主要内容,如果未能解决你的问题,请参考以下文章

php 多个 一维数组 去重 组成新数组

在PHP中查找数组元素的所有可能的唯一组合[重复]

java字母和数字排列组合后

js 一个或多个一维数组,算出元素之间相互组合的所有情况

求C语言二维数组元素排列组合?

PHP数组内容不重复组合排列算法