@Dizzy221
PHP Программист

Как создать двухсловные сочетания из массива?

Доброго времени суток. Предположим есть такой массив:
$array = ['Слово 1', 'Слово 2', 'Слово 3', 'Слово 4'];

В конечном итоге я должен получить все вариации словосочетаний из 2 слов (разных, кроме перестановок местами) в строку.
В данной ситуации так -
Слово 1; Слово 2;
Слово 1; Слово 3;
Слово 1; Слово 4;
Слово 2; Слово 3;
Слово 2; Слово 4;
Слово 3; Слово 4;

Но слов может быть больше или меньше...
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
Считаем, что в исходном массиве слова уникальны.
$array = ['Слово 1', 'Слово 2', 'Слово 3', 'Слово 4'];
$len = count($array);
$result = [];
for ($i = 0; $i < $len; $i++) {
  for ($j = $i+1; $j < $len; $j++) {
    array_push($result, [$array[$i], $array[$j]]);
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
kawabanga
@kawabanga
$array = ['Слово 1', 'Слово 2', 'Слово 3', 'Слово 4'];
        foreach ($array as $first):
            foreach ($array as $second) :
                if ($first !== $second): 
                    echo $first." ".$second."\n";
                endif;
            endforeach;
        endforeach;
Ответ написан
Tomio
@Tomio
backend developer (python, php)
Вообще по комбинаторике есть готовые решения. Например, вот эти библиотеки могут вам помочь:
  1. phpermutations
  2. math-php - раздел Probability - Combinatorics
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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