以前,我可以轻松处理这样的事情,但自从7年前离开开发世界以来,我失去了开发思维...
我的情况是,我正在尝试输出客户可以选择的每个可能的产品选项以及生成的SKU - 由每个选项的SKU附加到产品的SKU。
数据存储得不好,因为这是一个相当古老的网站。
下面是MySQL中存储数据的示例,以及我在PHP中尝试实现的目标。我将其限制为一个具有多个选项的产品。
products.id | products.sku |
---|---|
1 | a |
options.id | options.product_id |
---|---|
1 | 1 |
2 | 1 |
3 | 1 |
4 | 1 |
option_values.id | option_values.option_id | option_values.value |
---|---|---|
1 | 1 | b |
2 | 1 | c |
3 | 1 | d |
4 | 2 | e |
5 | 2 | f |
6 | 3 | g |
7 | 3 | h |
8 | 4 | i |
9 | 4 | j |
10 | 4 | k |
迭代每个选项的每个可能组合,并输出生成的SKU;
可能的SKUs |
---|
abegi |
acegi |
adegi |
abfgi |
acfgi |
adfgi |
abehi |
acehi |
adehi |
abegj |
acegj |
adegj |
abegk |
acegk |
adegk |
[等等] |
当我像这样写出来时,它似乎非常简单,这让我想知道我是否遗漏了什么...
我目前正在迭代每个产品,对于每个产品的每个选项,然后对于每个选项的每个值,但显然这不能满足每种可能的情况。
DB Fiddle - https://www.db-fiddle.com/f/vHWiKsKi9WUvvDwAa6pqw6/0
谢谢!
The function that creates the Cartesian product of all options is inspired bythe answer to this question.
If you are only interested in the sku string, you can simplify the function to:
I'm sure someone can provide a more efficient answer, but this answer produces the desired output based on your example data.