如何在PHP中找到任意数量数组的所有可能组合

如何在PHP中找到任意数量数组的所有可能组合,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我在php中有任意数量的嵌套数组。例如: Array ( [0] => Array ( [0] => 36 [0] => 2 [0] => 9 ) [1] => Array ( [0] => 95 [1] => 21 [2] => 102

我在php中有任意数量的嵌套数组。例如:

Array
(
    [0] => Array
        (
            [0] => 36
            [0] => 2
            [0] => 9
        )

    [1] => Array
        (
            [0] => 95
            [1] => 21
            [2] => 102
            [3] => 38
        )

    [2] => Array
        (
            [0] => 3
            [1] => 5
        )

)
我想找到最有效的方法来组合这些嵌套数组的所有可能组合。我想以这样的方式结束

Array
(
    [0] => "36,95,3"
    [1] => "36,95,5"
    [2] => "36,21,3"
    [3] => "36,21,5"

    etc...

)
结果组合的顺序并不重要。也就是说,“3,95,36”、“36,95,3”和“95,36,3”之间没有区别。我想省略这些多余的组合

任何关于如何进行的建议都将不胜感激

提前感谢,


<?php
$a = array("01", "02");
$b = array("white", "green");
$c = array("one", "two", "three");
$aG = array($a, $b, $c);
$codes = array();
$pos = 0;
generateCodes($aG);

function generateCodes($arr) {
    global $codes, $pos;
    if(count($arr)) {
    for($i=0; $i<count($arr[0]); $i++) {
        $tmp = $arr;
        $codes[$pos] = $arr[0][$i];
        $tarr = array_shift($tmp);
        $pos++;
        generateCodes($tmp);

    }
    } else {
    echo join(", ", $codes)."<br/>";
    }
    $pos--;
}
?>

任意数量组的通用置换解决方案(在Groovy中保持简单)

list=[[“A”、“B”、“W”]、[“C”、“D”]、[“X”、“Y”]]
r=[]
无效p(列表l,整数n){
对于(t in l[n]){
r[n]=t
如果(n
深度也是任意的吗?或者只是给定深度的数字?如果深度已知,你可以像Josh Curren说的那样循环-如果不知道,你就必须递归地循环。你总是想要三倍还是36,95和36,21,95,5?
list = [["A", "B", "W"], ["C", "D"], ["X", "Y"]]

r = []
void p(List<List<String>> l, int n) {
    for(t in l[n]) {
        r[n] = t
        if (n < l.size() - 1) {
            p(l, n + 1)
        } else {
            println(r)
        }
    }
}

p(list, 0);