• Как получить всевозможные комбинации массива PHP?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Подсчитайте руками, сколько комбинаций для массива из 1,2,3,4 элементов? ответ будет 1,3,7,15 - степени двойки минус один. Подумайте, откуда это берется? Каждый элемент может или быть в ответе, или нет. 2 варианта. Премножаем все, получаем степень двойки. Но это учитывает варинат пустого ответа, поэтому один надо вычесть.

    Тут есть 2 подхода - рекурсивная функция перебора, которая или берет или пропускает текущий элемент. В конце, если хоть один элемент был взят - выводит текущий массив.

    Второй подход - перебирать битовую маску. Каждое число от 1 до 2^n будет в двоичной системе числения представлять какой-то вариант выбора разрядов. Поэтому можно прогнать цикл от 1 до 2^n, потом посмотреть на биты этого числа и брать соотвествтующие числа из массива.
    Ответ написан
    Комментировать
  • Как в переменную вставить цикл for?

    Preemiere
    @Preemiere
    Symfony developer
    В переменную можно определить анонимную функцию
    $getSlug = function($koluslug, $slyg) {
        for ($x=1; $x<=$koluslug; $x++ ){
            $slugSql2 = mysql_fetch_assoc(mysql_query("SELECT * FROM `info3` WHERE id='$slyg[$x]'"));      echo  $slugSql2['name'];
        }
    };


    И далее общаться к переменной как к функции с передачей ей параметров:
    $slug = $getSlug($koluslug, $slyg);

    php.net/manual/ru/functions.anonymous.php
    Ответ написан
    Комментировать