如何在PHP中找到任意数量数组的所有可能组合
我在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
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);