Задать вопрос
@Gemorroj

Сопоставление матриц?

Необходимо из данных в переменной $data получить все возможные варианты, как указано в переменной $expected
$data = [
    [
        'rates' => [1, 2],
        'origin' => 1,
    ],
    [
        'rates' => [3, 4],
        'origin' => 2,
    ],
    [
        'rates' => [5],
        'origin' => 3,
    ],
];
// нужно получить все возможные комбинации, как показано ниже
 
 
$expected = [
    [
        [
            'rate' => 1,
            'origin' => 1,
        ],
        [
            'rate' => 3,
            'origin' => 2,
        ],
        [
            'rate' => 5,
            'origin' => 3,
        ],
    ],
    [
        [
            'rate' => 1,
            'origin' => 1,
        ],
        [
            'rate' => 4,
            'origin' => 2,
        ],
        [
            'rate' => 5,
            'origin' => 3,
        ],
    ],
    [
        [
            'rate' => 2,
            'origin' => 1,
        ],
        [
            'rate' => 3,
            'origin' => 2,
        ],
        [
            'rate' => 5,
            'origin' => 3,
        ],
    ],
    [
        [
            'rate' => 2,
            'origin' => 1,
        ],
        [
            'rate' => 4,
            'origin' => 2,
        ],
        [
            'rate' => 5,
            'origin' => 3,
        ],
    ],
];
  • Вопрос задан
  • 145 просмотров
Подписаться 3 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
@ravewave
посмотрите алгоритм декартова произведения множеств
Ответ написан
Комментировать
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Рекурсивной функцией делайте. Передавайте ей уже собранную строку и сколько элементов списка rates обработано. В функции перебирайте каждый элемент внутреннего rates дописывайте к уже собранной строке один элемент и рекурсивно запускайтесь дальше. Если все элементы обработаны, добавляйте собранную строку в ответ.
Ответ написан
@Gemorroj Автор вопроса
решение от коллеги
https://3v4l.org/viVlL
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽