Специфическая задача.. все возможные варианты с групированием

beba

Новичок
Специфическая задача.. все возможные варианты с групированием

Доброго времени суток..
Задача больше просто по алгоритмизации, но столкунлся в реализации на пхп..

Возьмем пример...
След. значения настроек.
Дата начала - 25.07.2006
Дата конца - 26.07.2006
Спецификация - Розничная торговля
Спецификация - Оптовая торговля

Под настройкой подразумевается название поля - значения поля.

У пользователя возможность выбора каждой из этих настроек.

Допустим пользователь выбрал все настройки, после чего при обработке нужно получить
такие варианты :

Дата начала 25.07.2006 Дата конца 26.07.2006 Спецификация Розничная торговля
Дата начала 25.07.2006 Дата конца 26.07.2006 Спецификация Оптовая торговля

Если пример настроек такой:
Дата начала - 24.07.2006
Дата начала - 25.07.2006
Дата конца - 26.07.2006
Спецификация - Розничная торговля
Спецификация - Оптовая торговля

Нужно получить такие варианты..
Дата начала 24.07.2006 Дата конца 26.07.2006 Спецификация Розничная торговля
Дата начала 24.07.2006 Дата конца 26.07.2006 Спецификация Оптовая торговля
Дата начала 25.07.2006 Дата конца 26.07.2006 Спецификация Розничная торговля
Дата начала 25.07.2006 Дата конца 26.07.2006 Спецификация Оптовая торговля

Я пришел к тому, что имею массив для первого случая
Код:
array ('fields_id' => array(3), 'count_setts' => (3), 'fields_value' => array(3))
в fields_id поля учавствующие в выборе пользователя, в count_setts => кол-во настроек для данного поля, в fields_value значения настроек для данного поля через ;.

Как из этого получить все возможные варианты.. но так, чтобы учитывалась групировка значений настроек?

Было бы просто сделать несколько вложенных foreach в случае, когда кол-во полей одинаково, но в моем случае кол-во полей может меняться..

Я не жду прям кода с решением, было бы неплохо, если бы кто просто натолкнул на мысль, а к решению я бы и сам пришел был.. так думаю намного правильнее.
Спасибо..

-~{}~ 26.07.06 17:44:

Спасибо всем тем, кто читал вопрос..
И прошу прощение за то, что зря отвлек.
я придумал решение...

тему просьба закрыть
 

partizan

Новичок
PHP:
$k = 1;// (предполагается, что в массиве fields_id нумерация с 1)
    $result = array() // Сюда по ходу перебора будут заносится текущий вариант настроек

    $current[1] = 0; // Тут будет хранится текущий выбранный вариант для каждог параметра (нумерация вариантов для кажного параметра - с 0)

    while ($k>0)
    {
     //$k - номер настройки, для которой будем выбирать значение
     // берем текущее выбранное значение ($current[$k]), и увеличиваем на 1
     $m = $current[$k]++;
     if (m < <количество вариантов значений для k-го параметра> )
     {
         // "выбираем" этот вариант
        $result[$k] = <m-й вариант значения для к-го параметра>
        if ($k  = <количество всех параметров>)
        {
            // Найден один из вариантов решения в массиве $result.           Выводим его
        } else
        {
             // Найден некоторый вариант настроек для первых к параметров. Перебираем дальше ("углубляемся" на следующий шаг перебора)
            $k++;
            $current[$k] = 0;
        }
     }
     else
     {
         // Для к-го параметра уже перебраны все варианты.
         // Возвращаемся на шаг назад, и выбираем другие значения для к-го параметра
         $k--;
     };

    }
 
Сверху