当前位置: 首页 > 后端技术 > PHP

电商sku多规格全排,笛卡尔积算法

时间:2023-03-30 05:05:59 PHP

1){foreach($stras$k=>$val){foreach($firstas$key=>$value){//最终实现formats1,3,76//可以根据具体需要改变$str2[]=$val.','.$value;}}}else{foreach($firstas$key=>$value){//最终实现格式1,3,76//可以根据具体需要更改$str2[]=$value;}}//递归拼接if(count($arr)>0){$str2=cartesian($arr,$str2);}//返回最终的笛卡尔积return$str2;}$cartesian_product=cartesian($arr);print_r($cartesian_product);?>varlist=[]list[0]=['Gold','Silver'];列表[1]=['32G','64G'];list[2]=['联通','移动','电信']console.log(descartes(list))//笛卡尔积算法functiondescartes(list){//父上层索引;计数指针计数varpoi新台币={};变种结果=[];varpIndex=null;vartempCount=0;变种温度=[];//根据参数列生成指针对象for(varindexinlist){if(typeoflist[index]=='object'){point[index]={'parent':pIndex,'count':0}pIndex=索引;}}//单维数据结构直接返回if(pIndex==null){returnlist;}//动态生成笛卡尔积while(true){for(varindexinlist){tempCount=point[index]['count'];temp.push(列表[索引][tempCount]);}//按下回车结果数组result.push(temp);温度=[];//检查指针的最大值while(true){if(point[index]['count']+1>=list[index].length){point[index]['count']=0;pIndex=point[index]['parent'];如果(pIndex==null){返回结果;}//让parent再次检查index=pIndex;}else{point[index]['count']++;休息;}}}}

最新推荐
猜你喜欢