zoukankan      html  css  js  c++  java
  • PHP 多个一维数组排列组合的所有可能

    <?php
        // auth bin.chen 525945448
    
    
        $a = array('A');
        $b = array('C');
        $c = array('E');
        $f = array('P');
        $d = array($a,$b,$c,$f );
        //计算每一个数组的长度
        $len = 1;
        $arrLen = count($d); //需要排列数组有多少个
        $recIndex = null; //记录当前该取的位置
        //foreach 计数 
        $count_3 = 0;
        foreach ($d as $key => $value) {
            $lenRec[$count_3] = count($value);
            $len = $lenRec[$count_3]*$len;
            $recIndex[] = 0;//第一次全部取第0个
            $count_3++;
        }
        //算出% 的值
        $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 ++;
            //改变获取的位置
        }
    
    ?>
  • 相关阅读:
    go装饰器
    python属性描述符和属性查找过程
    python property动态属性
    python中is 与 ==的区别
    python变量到底是什么
    python对象的可变性
    python sorted函数
    《Note --- UE4 --- Blueprint_Overview_HowTo》
    《Temporal AA , SMAA and MSAA》
    TODO
  • 原文地址:https://www.cnblogs.com/bin-pureLife/p/5239673.html
Copyright © 2011-2022 走看看