2012-01-06 3 views
0

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

У меня есть 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

+0

Вы уверены, что это лучший способ идти о решении любой проблемы вам иметь? Это займет много места. И откуда взялось число 6? Что это за помощь? – Hammerite

+0

У нас есть модуль, который мы пытаемся создать автоматические тесты для ... Он имеет 6 переменных, которые мы вводим в него. – Michael

+1

Вам, вероятно, следует добавить теги, связанные с тестированием, на этот вопрос и уточнить, в чем заключается ваша мотивация для запроса вопроса. Кто-то может предложить более простой способ тестирования. В конце концов, у вас сейчас 6 переменных, а если у вас 7 в будущем? Там будут люди, которые много знают о автоматическом тестировании, обращаются к ним за советом. – Hammerite

ответ

1

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

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 />"; 
      } 
     } 
     } 
    } 
    } 
} 
1

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); 
+0

ошибка синтаксиса для цикла слова 4, отсутствие открывающей скобки –

+0

Спасибо eric (и Brad) –

 Смежные вопросы

  • Нет связанных вопросов^_^