Какой алгоритм использовать для товара с параметрами?
=======================================================

 Есть товар.   

У него есть параметры, например:  

- Цвет(красный,зеленый синий)  

- Материал(хлопок, шелк)  

- Размер(xs,s,m,l)  

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

Сочетание значений у параметров(в примере 3 параметра) дает какую-то уникальную вариацию товара со своим id, ценой. Сочетаться значения параметров могут по разному. Т.е. для синего цвета может не быть размера xs. Количество всех возможных вариаций товара не равна произведению всех количеств значений параметров.  

  

Данные хранятся в виде многомерного массива, примерно в таком виде:  

```
$arr = array(
	0 => array(
		'variation_id' => 100,
		'price'        => 1000,
		'parameters'   => array(
			'color'    => 'red',
			'material' => 'cotton',
			'size'     => 'xs'
		)
	),
	1 => array(
		'variation_id' => 101,
		'price'        => 1001,
		'parameters'   => array(
			'color'    => 'green',
			'material' => 'cotton',
			'size'     => 'xs'
		)
	),
	2 => array(
		'variation_id' => 102,
		'price'        => 1002,
		'parameters'   => array(
			'color'    => 'red',
			'material' => 'cotton',
			'size'     => 's'
		)
	),
	...
);
```
  

Для пользователя выводится карточка товара , где есть группы чекбоксов(параметры) с значениями.   

Пользователь выбирает в любом порядке одно из значений любого из параметров. Значения из других параметров становятся неактивными, если не участвуют в какой то из вариации с выбранным значением. Т.е. при последующем выборе остальных значений параметров не подходящие значения взаимоисключаются. Надеюсь понятно описал.  

Вопрос как этот алгоритм реализовать что бы быстро, хорошо работало? Аналогичная система реализована в карточке товара на aliexpress. 

 это называется [EAV](https://ru.qwe.wiki/wiki/Entity%E2%80%93attribute%E2%80%93value_model)