php开发商品怎么批量生成sku组合
导读:本文共4356.5字符,通常情况下阅读需要15分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:不同的系统有不同的需求,以下的需求就是要添加完各种规格后批量生成sku的。效果图页面代码这里就不说了,sku的生成方式是根据所有规格进行组合,也就是数学上的笛卡尔积,我用php写了两种方式,记录一下。第一种,生成字符串<?phpfunctionCartesian($data){$len=count($data);for($i=0;$i<$len-1;$i++){if($i===... ...
目录
(为您整理了一些要点),点击可以直达。不同的系统有不同的需求,以下的需求就是要添加完各种规格后批量生成sku的。
效果图
页面代码这里就不说了,sku的生成方式是根据所有规格进行组合,也就是数学上的笛卡尔积,我用php写了两种方式,记录一下。
第一种,生成字符串
<?php
functionCartesian($data){
$len=count($data);
for($i=0;$i<$len-1;$i++){
if($i===0){
//数组第一个值
$result=$data[0];
}
$temp=[];
//数组第一个值和第二个值组合
foreach($resultas$res){
//数组第二个值...$i+1
foreach($data[$i+1]as$sec){
$temp[]=$res.'-'.$sec;
}
$result=$temp;
}
}
return$result;
}
//需要计算的数组
$data=array(
array('白色','银色','玫瑰金'),
array('64G','128G'),
array('移动','电信','联通'),
array('国行','港版')
);
//打印结果
$result=Cartesian($data);
print_r($result);
?>
实际开发中,你只要生成上面的二维数组就可以组合了,效果如下:
Array
(
[0]=>白色-64G-移动-国行
[1]=>白色-64G-移动-港版
[2]=>白色-64G-电信-国行
[3]=>白色-64G-电信-港版
[4]=>白色-64G-联通-国行
[5]=>白色-64G-联通-港版
[6]=>白色-128G-移动-国行
[7]=>白色-128G-移动-港版
[8]=>白色-128G-电信-国行
[9]=>白色-128G-电信-港版
[10]=>白色-128G-联通-国行
[11]=>白色-128G-联通-港版
[12]=>银色-64G-移动-国行
[13]=>银色-64G-移动-港版
[14]=>银色-64G-电信-国行
[15]=>银色-64G-电信-港版
[16]=>银色-64G-联通-国行
[17]=>银色-64G-联通-港版
[18]=>银色-128G-移动-国行
[19]=>银色-128G-移动-港版
[20]=>银色-128G-电信-国行
[21]=>银色-128G-电信-港版
[22]=>银色-128G-联通-国行
[23]=>银色-128G-联通-港版
[24]=>玫瑰金-64G-移动-国行
[25]=>玫瑰金-64G-移动-港版
[26]=>玫瑰金-64G-电信-国行
[27]=>玫瑰金-64G-电信-港版
[28]=>玫瑰金-64G-联通-国行
[29]=>玫瑰金-64G-联通-港版
[30]=>玫瑰金-128G-移动-国行
[31]=>玫瑰金-128G-移动-港版
[32]=>玫瑰金-128G-电信-国行
[33]=>玫瑰金-128G-电信-港版
[34]=>玫瑰金-128G-联通-国行
[35]=>玫瑰金-128G-联通-港版
)
第二种,生成数组格式
<?php
functionCartesian($data){
$len=count($data);
//取第一个集合数组值
$result=$data[0];
for($i=0;$i<$len-1;$i++){
$arr1=$result;
$result=[];
//数组第一个值和第二个值组合
foreach($arr1as$res){
//数组第二个值...$i+1
foreach($data[$i+1]as$sec){
if(!is_array($res)){
$res=array($res);
}
if(!is_array($sec)){
$sec=array($sec);
}
$result[]=array_merge_recursive($res,$sec);
}
}
}
return$result;
}
//需要计算的数组
$data=array(
array('白色','银色','玫瑰金'),
array('64G','128G'),
array('移动','电信','联通'),
array('国行','港版')
);
//打印结果
$result=Cartesian($data);
print_r($result);
?>
输出打印结果
Array
(
[0]=>Array
(
[0]=>白色
[1]=>64G
[2]=>移动
[3]=>国行
)[1]=>Array
(
[0]=>白色
[1]=>64G
[2]=>移动
[3]=>港版
)
[2]=>Array
(
[0]=>白色
[1]=>64G
[2]=>电信
[3]=>国行
)
[3]=>Array
(
[0]=>白色
[1]=>64G
[2]=>电信
[3]=>港版
)
[4]=>Array
(
[0]=>白色
[1]=>64G
[2]=>联通
[3]=>国行
)
[5]=>Array
(
[0]=>白色
[1]=>64G
[2]=>联通
[3]=>港版
)
[6]=>Array
(
[0]=>白色
[1]=>128G
[2]=>移动
[3]=>国行
)
[7]=>Array
(
[0]=>白色
[1]=>128G
[2]=>移动
[3]=>港版
)
[8]=>Array
(
[0]=>白色
[1]=>128G
[2]=>电信
[3]=>国行
)
[9]=>Array
(
[0]=>白色
[1]=>128G
[2]=>电信
[3]=>港版
)
[10]=>Array
(
[0]=>白色
[1]=>128G
[2]=>联通
[3]=>国行
)
[11]=>Array
(
[0]=>白色
[1]=>128G
[2]=>联通
[3]=>港版
)
[12]=>Array
(
[0]=>银色
[1]=>64G
[2]=>移动
[3]=>国行
)
[13]=>Array
(
[0]=>银色
[1]=>64G
[2]=>移动
[3]=>港版
)
[14]=>Array
(
[0]=>银色
[1]=>64G
[2]=>电信
[3]=>国行
)
[15]=>Array
(
[0]=>银色
[1]=>64G
[2]=>电信
[3]=>港版
)
[16]=>Array
(
[0]=>银色
[1]=>64G
[2]=>联通
[3]=>国行
)
[17]=>Array
(
[0]=>银色
[1]=>64G
[2]=>联通
[3]=>港版
)
[18]=>Array
(
[0]=>银色
[1]=>128G
[2]=>移动
[3]=>国行
)
[19]=>Array
(
[0]=>银色
[1]=>128G
[2]=>移动
[3]=>港版
)
[20]=>Array
(
[0]=>银色
[1]=>128G
[2]=>电信
[3]=>国行
)
[21]=>Array
(
[0]=>银色
[1]=>128G
[2]=>电信
[3]=>港版
)
[22]=>Array
(
[0]=>银色
[1]=>128G
[2]=>联通
[3]=>国行
)
[23]=>Array
(
[0]=>银色
[1]=>128G
[2]=>联通
[3]=>港版
)
[24]=>Array
(
[0]=>玫瑰金
[1]=>64G
[2]=>移动
[3]=>国行
)
[25]=>Array
(
[0]=>玫瑰金
[1]=>64G
[2]=>移动
[3]=>港版
)
[26]=>Array
(
[0]=>玫瑰金
[1]=>64G
[2]=>电信
[3]=>国行
)
[27]=>Array
(
[0]=>玫瑰金
[1]=>64G
[2]=>电信
[3]=>港版
)
[28]=>Array
(
[0]=>玫瑰金
[1]=>64G
[2]=>联通
[3]=>国行
)
[29]=>Array
(
[0]=>玫瑰金
[1]=>64G
[2]=>联通
[3]=>港版
)
[30]=>Array
(
[0]=>玫瑰金
[1]=>128G
[2]=>移动
[3]=>国行
)
[31]=>Array
(
[0]=>玫瑰金
[1]=>128G
[2]=>移动
[3]=>港版
)
[32]=>Array
(
[0]=>玫瑰金
[1]=>128G
[2]=>电信
[3]=>国行
)
[33]=>Array
(
[0]=>玫瑰金
[1]=>128G
[2]=>电信
[3]=>港版
)
[34]=>Array
(
[0]=>玫瑰金
[1]=>128G
[2]=>联通
[3]=>国行
)
[35]=>Array
(
[0]=>玫瑰金
[1]=>128G
[2]=>联通
[3]=>港版
)
)
php开发商品怎么批量生成sku组合的详细内容,希望对您有所帮助,信息来源于网络。