@darknet37

Как правильно прогнать цикл?

Есть массив из слов:
$array = array('женские','костюмы','оптом','от производителя','в Иваново','купить','недорого');

нужно как-то прогнать через цикл, чтобы выдалось:
Нужно чтобы слова не дублировались,
женские костюмы
женские костюмы оптом
женские костюмы оптом от производителя
женские костюмы оптом от производителя в Иваново
женские костюмы оптом от производителя в Иваново купить
женские костюмы оптом от производителя в Иваново купить недорого
женские костюмы оптом в Иваново
женские костюмы оптом в Иваново купить
женские костюмы оптом в Иваново купить недорого
женские костюмы от производителя
женские костюмы от производителя в Иваново
женские костюмы от производителя в Иваново купить
женские костюмы от производителя в Иваново купить недорого
женские костюмы в Иваново
женские костюмы в Иваново купить
женские костюмы в Иваново купить недорого
женские костюмы купить
женские костюмы купить недорого
костюмы оптом
костюмы оптом от производителя
костюмы оптом от производителя в Иваново
костюмы оптом от производителя купить
костюмы оптом от производителя недорого
костюмы оптом от производителя в Иваново купить
костюмы оптом в Иваново
костюмы оптом в Иваново купить
костюмы оптом в Иваново купить недорого
костюмы оптом купить
костюмы оптом купить недорого
костюмы оптом недорого

И так далее, все возможно связки слов, строчка могла состоять как из 2 слов так и из 7
Подскажите как это сделать?
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
@darknet37 Автор вопроса
Всем Спасибо, вот код который подходит под мои требования:
$array = array('женские','костюмы','оптом','от производителя','в Иваново','купить','недорого');
function depth_picker($arr, $temp_string, &$collect) {
    if ($temp_string != "")
        $collect []= $temp_string;

    for ($i=0; $i<sizeof($arr);$i++) {
        $arrcopy = $arr;
        $elem = array_splice($arrcopy, $i, 1); // removes and returns the i'th element
        if (sizeof($arrcopy) > 0) {
            depth_picker($arrcopy, $temp_string ." " . $elem[0], $collect);
        } else {
            $collect []= $temp_string. " " . $elem[0];
        }
    }
}
$collect = array();
depth_picker($array, "", $collect);
print_r($collect);
?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Ответ написан
Комментировать
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
не совсем понятна зависимость, если тебе нужны все возможные комбинации, можно использовать вложенные циклы, типа того
foreach ($array as $i1=>$w1) {
      echo $w1.' ';
      foreach ($array as $i2=>$w2) {
           if ($i1!=$i2) echo '  '.$w2;
      }
      echo PHP_EOL;
   }
Ответ написан
Комментировать
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
Судя по примеру комбинации должны быть случайны, могут повторятся и их должно быть 5.
Тогда так:
$array = array('слово1','слово2,''слово3','слово4');
for ($i = 1; $i <= 5; $i++) {
  shuffle($array);
  foreach($array as $one){
    echo $one;
    echo '&nbsp;';
  }
  echo '<br>';
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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