如何获得多维数组的所有可能组合

时间:2013-02-26 23:28:46

标签: php arrays multidimensional-array foreach

好的,这里我有一个多维数组。它由3个阵列组成,每个阵列有3个数字。

$numbers = array(
    array("1", "2", "3"),
    array("4", "5", "6"),
    array("7", "8", "9"),
);

我想生成并列出这些数组中每个可能的数字组合。因此,例如,“147”(1来自第一阵列,4来自第二阵列,7来自第三阵列),“247,347,157,257,357,167,267,367等等。 。“

重要的是第一个数字必须来自第一个数组,第二个数字来自第二个数组,第三个来自第三个数组。

我曾尝试使用嵌套的foreach循环遍历这些数组,但我无法弄清楚它是否让我头晕。希望有意义,任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

$numbers = array(
    array("1", "2", "3"),
    array("4", "5", "6"),
    array("7", "8", "9"),
);

$f_nb = $numbers['0'];
$s_nb = $numbers['1'];
$t_nb = $numbers['2'];

$final_array = array();

for($a = 0; $a<sizeof($f_nb); $a++) 
{
    for($b = 0; $b<sizeof($s_nb); $b++) 
    {
        for($c = 0; $c<sizeof($t_nb); $c++) 
        {
            $final_array[] = $f_nb["$a"] . $s_nb["$b"] . $t_nb["$c"];
        }
    }
}

print_r($final_array);

答案 1 :(得分:2)

<?php
$numbers = array(
    array("1", "2", "3"),
    array("4", "5", "6"),
    array("7", "8", "9"),
);

for ($i=0;$i<3;$i++) {
  for ($j=0;$j<3;$j++) {
    for ($k=0;$k<3;$k++) {
      echo $numbers[0][$i]+" "+$numbers[1][$j]+" "+$numbers[2][$k]+"\n";
    }
  }
}
?>

我没有在php中编程,因此代码可能会使你的眼睛流血。尽管如此,代码仍然有效并证明了这一想法。