多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 商品规格选择 # 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