正文开始 <p>已知有属性:</p><p>颜色 : 红 、 黄、 蓝</p><p>尺寸: 12、14、16</p><p>规格: SL 、 XL 、 XXL</p><p><br /></p><p>单选任意一个属性的算法很简答:</p><p>如 选中:红。 直接查找 color='红'的所有SKU 、再算上红的所有邻居属性:黄、蓝 即可。(这里可以封装一个 获取单个属性的邻居属性的函数,缓存起来,因为SKU的属性一般不会变化)</p><p><br /></p><p>当选中任意多个属性时,是时候表演真正的技术了:</p><p>如 选中: 红、 12 ,此时既要选出 color='红' AND size = '12' 的所有SKU, 还要计算 红的邻居:黄、蓝 它们俩是否和12 也有一腿! 那么直接遍历一遍这几个邻居校验不就KO了吗?</p><p> 即是 :</p><p> 遍历当前选中的属性:红、12 ,取出这俩属性的邻居 (黄、蓝;14、16),将邻居和其他搭配的属性(12;红)去校验存在的SKU。</p><p>存在的邻居即可保留合并一起。</p><p> 代码思路:</p><p>$existSku = $db->getAll('sku'," color='红' AND size=12 "); //查出2个属性的可选sku<br /></p><p> if($db->ifExist(`sku`, "color='黄' AND size=12") ) $existSku = array_push($existSku, '黄' );<br /> if($db->ifExist(`sku`, "color='蓝' AND size=12") ) $existSku = array_push($existSku, '蓝' );<br /> if($db->ifExist(`sku`, "color='14' AND size=红") ) $existSku = array_push($existSku, '14' );<br /> if($db->ifExist(`sku`, "color='16' AND size=红") ) $existSku = array_push($existSku, '16' );</p><p>最终结果就是 $existSku;<br /></p><p><br /></p>
正文结束 |
阿里云、腾讯云 apache的vhost配置https | PHP的压力测试工具ab.exe 和mpm介绍提高并发数 |