Как вычислить / сгенерировать строку со всеми возможными значениями в массиве?

Это сводит меня с ума, но сейчас я борюсь с этим полдень (im в GMT + 2;)).

Я хочу сделать довольно (я думал, но понял, что это получилось иначе ..) простая задача.

Допустим, у меня есть массив, который выглядит так:

Array ( [0] => Array ( [OptionID] => 8748 [Values] => Array ( [0] => 11614 [1] => 11615 ) ) [1] => Array ( [OptionID] => 8749 [Values] => Array ( [0] => 11616 [1] => 11617 ) ) ) 

Этот массив предназначен для создания всех возможных опций с продуктом. Допустим, что OptionID 8748 означает «Размер», а значения в этом массиве – «L» и «XL». OptionID 8749 может быть «Цвет» со значениями «Красный» и «Черный».

Я хочу достичь простой задачи, чтобы получить четыре уникальные комбинации этого продукта в строке, например:

11614 + 11616 11614 + 11617 11615 + 11616 11615 + 11617

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