# 商品规格选择
# laramall
首先查一下货品表
![](https://box.kancloud.cn/cd4d78c697f67539e98fadca13e14862_530x294.png)
然后访问地址:http://laramall.jiezeal.com/home/goodsDetail/2
![](https://box.kancloud.cn/97c575170d52bd317534ca7d13704e8c_874x447.png)
可以看到商品 荣耀8青春版
有三个规格: 颜色、版本、套装
ID分别是 1、2、3
**颜色**拥有4个规格值:
流光金、珠光白、幻夜黑、幻海蓝
ID分别是 1、2、3、4
**版本**拥有3个规格值:
全网通(3GB 32GB)、全网通(4GB 32GB)、全网通(4GB 64GB)
ID分别是 5、6、7
**套装**拥有1个规格值:
官方标配
ID为 8
通过url可以知道我们现在看到的是2号货品,通过货品表可以知道2号货品的规格情况是:"{"1": "1", "2": "6", "3": "8"}",在页面的显示是红色实线
那么现在我们可以点的有:
珠光白、幻夜黑、全网通(3GB 32GB)
如果我们点**珠光白**,那么就会产生一个新的组合:
珠光白+全网通(3GB 32GB)+官方标配,即:
"{"1": "2", "2": "6", "3": "8"}"
![](https://box.kancloud.cn/fa8a42b9928faaea2dad0eb59325254d_823x292.png)
如果我们点**全网通(3GB 32GB)**,就是:
"{"1": "1", "2": "5", "3": "8"}"
![](https://box.kancloud.cn/09ecba66f39664d45878c4492a1bcdbf_794x286.png)
但不管我们点**珠光白**还是**全网通(3GB 32GB)**,都意味着另外的两个规格会和新点击的这个规格组成一个新的组合
也就是说有2个规格是不会变的,只有一个规格是会变化的
通过这个规律,我们就可以把2号货品的规格进行两两排列组合
```
array:3 [▼
0 => "1:1@2:6"
1 => "1:1@3:8"
2 => "2:6@3:8"
]
```
然后去获取满足所有组合条件的货品规格
```
array:4 [▼
0 => "{"1": "1", "2": "6", "3": "8"}"
1 => "{"1": "1", "2": "5", "3": "8"}"
3 => "{"1": "2", "2": "6", "3": "8"}"
4 => "{"1": "3", "2": "6", "3": "8"}"
]
```
然后转换格式并去重
```
array:6 [▼
0 => "1:1"
1 => "2:6"
2 => "3:8"
4 => "2:5"
6 => "1:2"
9 => "1:3"
]
```
也就是说 1:1、1:2、1:3、2:5、2:6、3:8 是满足所有组合条件的货品规格,在页面显示的就是灰色实线。而 1:4、2:7 是不满足的,因此在页面显示的就是灰色虚线。
那如果这个货品有4个规格呢?
如:http://laramall.jiezeal.com/home/goodsDetail/10
只需要在排列组合的时候按照3个进行排列组合就可以了
如果有5个规格,则按4个进行排列组合
多个同理 ...
排列组合参考文章:
http://blog.csdn.net/song5198038_1/article/details/50188739