@ak_wi

Как получить все уникальные пары из массива?

Есть массив, содержащий внутри себя массивы со строками. Например:
$array = [
    ['Синий', 'Алый', 'Коричневый'],
    ['Дерево', 'Сталь', 'Железо'],
    ['Корабль', 'Самолет', 'Поезд'],
...
];


Как получить все уникальные сочетания значений из массивов внутри него?

Например: Синий - Дерево - Корабль, Синий - Дерево - Самолет и т.п.

Думаю понятно, что пары внутри массивов не нужны, типа синий-алый - дерево и т.п.
  • Вопрос задан
  • 1229 просмотров
Решения вопроса 1
0xD34F
@0xD34F
$numArr = count($array);
$numElems = count($array[0]);

$combinations = [];
$numCombinations = pow($numElems, $numArr);

for ($i = 0; $i < $numCombinations; $i++) {
  $combination = [];

  for ($j = 0; $j < $numArr; $j++) {
    $arrIndex = $j;
    $elIndex = $i / pow($numElems, $j) % $numElems;
    $combination[] = $array[$arrIndex][$elIndex];
  }

  $combinations[] = $combination;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@oleg_ods
Разбить на три массива в каждом из которых 1 характеристика(цвет, материал, транспорт), а дальше с помощью 3-х вложенных циклов формировать строку.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы