За последние 24 часа нас посетили 100840 программистов и 5681 робот. Сейчас ищут 2740 программистов ...

Перебор символов

Тема в разделе "PHP для новичков", создана пользователем fudeglan, 27 май 2016.

  1. fudeglan

    fudeglan Новичок

    С нами с:
    27 май 2016
    Сообщения:
    4
    Симпатии:
    0
    Нужно перебрать элементы массива со всеми возможными вариантами
    Допустим есть массив:
    PHP:
    1. $arr = array('a', 'b', 'c');
    На выходе нужно получить нечто такое
    Код (Text):
    1. abc
    2. bac
    3. bca
    4.  
    5. bac
    6. abc
    7. acb
    8.  
    9. cab
    10. acb
    11. abc
    Количество элементов не ограначено
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Так в чём вопрос?
     
  3. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.151
    Симпатии:
    108
    Адрес:
    Украина
    Массив в массиве. Количество встроенных массивов зависит от count ($arr).
     
  4. fudeglan

    fudeglan Новичок

    С нами с:
    27 май 2016
    Сообщения:
    4
    Симпатии:
    0
    Нужно написать функцию, которая бы переберала. Чет у меня не получается
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
  6. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.151
    Симпатии:
    108
    Адрес:
    Украина
  7. fudeglan

    fudeglan Новичок

    С нами с:
    27 май 2016
    Сообщения:
    4
    Симпатии:
    0
    сылку можно)
     
  8. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.151
    Симпатии:
    108
    Адрес:
    Украина
    Так там аж 2
     
  9. fudeglan

    fudeglan Новичок

    С нами с:
    27 май 2016
    Сообщения:
    4
    Симпатии:
    0
    то что кинули не то.
    Нашел это. Походу подходит :)

    PHP:
    1. function permuteUnique($items, $perms = [], &$return = []) {
    2.     if (empty($items)) {
    3.         $return[] = $perms;
    4.     } else {
    5.         sort($items);
    6.         $prev = false;
    7.         for ($i = count($items) - 1; $i >= 0; --$i) {
    8.             $newitems = $items;
    9.             $tmp = array_splice($newitems, $i, 1)[0];
    10.             if ($tmp != $prev) {
    11.                 $prev = $tmp;
    12.                 $newperms = $perms;
    13.                 array_unshift($newperms, $tmp);
    14.                 permuteUnique($newitems, $newperms, $return);
    15.             }
    16.         }
    17.         return $return;
    18.     }
    19. }
    20.  
    21. $permutations = permuteUnique(array('a', 'b', 'c'));