PHP-комбинация массивов - PullRequest
       28

PHP-комбинация массивов

0 голосов
/ 06 января 2012

Редактировать: Небольшой фон для этого.У нас есть модуль, который принимает 6 различных переменных.Мы пытаемся полностью автоматизировать тестирование и тонкую настройку возможных различных значений, которые принимает модуль.

У меня есть 6 массивов, и мне нужно получить комбинации всех возможностей.

$words[1] = array("A","B","C","D","E","F");
$words[2] = array("Aa","Bb","Cc","Dd","Ee","Ff");
$words[3] = array("Aq","Bq","Cq","Dq","Eq","Fq");
$words[4] = array("Ab","Bc","Cd","De","Ef","F");
$words[5] = array("Az","Bz","Cz","Dz","Ez","Fz");
$words[6] = array("A1","B1","C1","D1","E1","F1");

Так что в основном я ищу все возможные уникальные комбинации, сохраняя при этом порядок массива $ words.

Примеры:

C Bb Fq De Bz B1

C Bb Fq De Bz E1

C Bb Fq De Fz B1

Ответы [ 2 ]

1 голос
/ 06 января 2012

xdazz имеет правильный подход, но неправильное исполнение ... вам нужно создать одну строку:

$ret = array();
foreach ($words[1] as $word1) {
  foreach ($words[2] as $word2) {
    foreach ($words[3] as $word3) {
      foreach ($words[4] as $word4) {
        foreach ($words[5] as $word5) {
          foreach ($words[6] as $word6) {
            $ret[] = $word1.' '.$word2.' '.$word3.' '.$word4.' '.$word5.' '.$word6;
          }
        }
      }
    }
  }
}
print_r($ret);
1 голос
/ 06 января 2012

Это должно дать вам желаемый результат.

for($a=0; $a < count($words[1]); $a++) {
  for($b=0; $b < count($words[2]); $b++) {
    for($c=0; $c < count($words[3]); $c++) {
      for($d=0; $d < count($words[4]); $d++) {
        for($e=0; $e < count($words[5]); $e++) {
          for($f=0; $f < count($words[6]); $f++) {
            echo $words[1][$a] . " " . $words[2][$b] . " " . $words[3][$c] . " " . $words[4][$d] . " " . $words[5][$e] . " " . $words[6][$f] . "<br />";
          }
        }
      }
    }
  }
}
...