php多个数组求组合数

<?php

$list [] = array("红", "黄", "蓝");
$list [] = array("大", "小");
$list [] = array("1G", "2G", "3G", "5G");
$list [] = array("aa", "bb", "cc", "dd");
$list [] = array("1", "2", "3", "4");

class ArrCombine
{
    function getCombine($list)
    {
        $rs = [];
        foreach ($list as $value) {
            $rs = array_merge($rs, $this->getSulie($list, $value, 1));
        }
        return $rs;
    }

    function getSulie($list, $content, $deep)
    {
        $rows = [];
        $i = 0;
        if ($deep > count($list)) {
            return;
        }
        foreach ($list as $k => $v) {
            if ($i == $deep) {
                
                foreach ($list[$k] as $vv) {
                    
                    $row = array_merge($content, [$vv]);
                    if ($deep == count($list) - 1) {
                        
                        $rows[] = $rows;
                    } else {
                        $rows = array_merge($rows, $this->getSulie($list, $row, $deep + 1));
                    }
                }
                break;
            }
            $i++;
        }
        return $rows;
    }
}

$class = new ArrCombine();
var_dump($class->getCombine($list));

结果

array(384) {
  [0] =>
  array(5) {
    [0] =>
    string(3) "红"
    [1] =>
    string(3) "大"
    [2] =>
    string(2) "1G"
    [3] =>
    string(2) "aa"
    [4] =>
    string(1) "1"
  }
  [1] =>
  array(5) {
    [0] =>
    string(3) "红"
    [1] =>
    string(3) "大"
    [2] =>
    string(2) "1G"
    [3] =>
    string(2) "aa"
    [4] =>
    string(1) "2"
  }
  [2] =>
  array(5) {
    [0] =>
    string(3) "红"
    [1] =>
    string(3) "大"
    [2] =>
    string(2) "1G"
    [3] =>
    string(2) "aa"
    [4] =>
    string(1) "3"
  }
  [3] =>
  array(5) {
    [0] =>
    string(3) "红"
    [1] =>
    string(3) "大"
    [2] =>
    string(2) "1G"
    [3] =>
    string(2) "aa"
    [4] =>
    string(1) "4"
  }
  [4] =>
  array(5) {
    [0] =>
    string(3) "红"
    [1] =>
    string(3) "大"
    [2] =>
    string(2) "1G"
    [3] =>
    string(2) "bb"
    [4] =>
    string(1) "1"
  }
  [5] =>
  array(5) {
    [0] =>
    string(3) "红"
    [1] =>
    string(3) "大"
    [2] =>
    string(2) "1G"
    [3] =>
    string(2) "bb"
    [4] =>
    string(1) "2"
  }
  [6] =>
  array(5) {
    [0] =>
    string(3) "红"
    [1] =>
    string(3) "大"
    [2] =>
    string(2) "1G"
    [3] =>
    string(2) "bb"
    [4] =>
    string(1) "3"
  }
  [7] =>
  array(5) {
    [0] =>
    string(3) "红"
    [1] =>
    string(3) "大"
    [2] =>
    string(2) "1G"
    [3] =>
    string(2) "bb"
    [4] =>
    string(1) "4"
  }
  [8] =>
  array(5) {
    [0] =>
    string(3) "红"
    [1] =>
    string(3) "大"
    [2] =>
    string(2) "1G"
    [3] =>
    string(2) "cc"
    [4] =>
    string(1) "1"
  }
  (more elements)...
}