您好,登錄后才能下訂單哦!
這篇文章主要講解了“php開發(fā)商品怎么批量生成sku組合”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“php開發(fā)商品怎么批量生成sku組合”吧!
不同的系統(tǒng)有不同的需求,以下的需求就是要添加完各種規(guī)格后批量生成sku的。
效果圖
頁(yè)面代碼這里就不說(shuō)了,sku的生成方式是根據(jù)所有規(guī)格進(jìn)行組合,也就是數(shù)學(xué)上的笛卡爾積,我用php寫了兩種方式,記錄一下。
實(shí)際開發(fā)中,你只要生成上面的二維數(shù)組就可以組合了,效果如下:<?php
function Cartesian($data){
$len = count($data);
for ($i = 0; $i< $len-1; $i++) {
if ($i === 0) {
// 數(shù)組第一個(gè)值
$result = $data[0];
}
$temp = [];
// 數(shù)組第一個(gè)值和第二個(gè)值組合
foreach ($result as $res) {
//數(shù)組第二個(gè)值...$i+1
foreach($data[$i+1] as $sec){
$temp[] = $res . '-' . $sec;
}
$result = $temp;
}
}
return $result;
}
//需要計(jì)算的數(shù)組
$data = array(
array('白色','銀色','玫瑰金'),
array('64G','128G'),
array('移動(dòng)','電信','聯(lián)通'),
array('國(guó)行','港版')
);
//打印結(jié)果
$result = Cartesian($data);
print_r($result);
?>
Array
(
[0] => 白色-64G-移動(dòng)-國(guó)行
[1] => 白色-64G-移動(dòng)-港版
[2] => 白色-64G-電信-國(guó)行
[3] => 白色-64G-電信-港版
[4] => 白色-64G-聯(lián)通-國(guó)行
[5] => 白色-64G-聯(lián)通-港版
[6] => 白色-128G-移動(dòng)-國(guó)行
[7] => 白色-128G-移動(dòng)-港版
[8] => 白色-128G-電信-國(guó)行
[9] => 白色-128G-電信-港版
[10] => 白色-128G-聯(lián)通-國(guó)行
[11] => 白色-128G-聯(lián)通-港版
[12] => 銀色-64G-移動(dòng)-國(guó)行
[13] => 銀色-64G-移動(dòng)-港版
[14] => 銀色-64G-電信-國(guó)行
[15] => 銀色-64G-電信-港版
[16] => 銀色-64G-聯(lián)通-國(guó)行
[17] => 銀色-64G-聯(lián)通-港版
[18] => 銀色-128G-移動(dòng)-國(guó)行
[19] => 銀色-128G-移動(dòng)-港版
[20] => 銀色-128G-電信-國(guó)行
[21] => 銀色-128G-電信-港版
[22] => 銀色-128G-聯(lián)通-國(guó)行
[23] => 銀色-128G-聯(lián)通-港版
[24] => 玫瑰金-64G-移動(dòng)-國(guó)行
[25] => 玫瑰金-64G-移動(dòng)-港版
[26] => 玫瑰金-64G-電信-國(guó)行
[27] => 玫瑰金-64G-電信-港版
[28] => 玫瑰金-64G-聯(lián)通-國(guó)行
[29] => 玫瑰金-64G-聯(lián)通-港版
[30] => 玫瑰金-128G-移動(dòng)-國(guó)行
[31] => 玫瑰金-128G-移動(dòng)-港版
[32] => 玫瑰金-128G-電信-國(guó)行
[33] => 玫瑰金-128G-電信-港版
[34] => 玫瑰金-128G-聯(lián)通-國(guó)行
[35] => 玫瑰金-128G-聯(lián)通-港版
)
輸出打印結(jié)果<?php
function Cartesian($data){
$len = count($data);
// 取第一個(gè)集合數(shù)組值
$result = $data[0];
for ($i = 0; $i< $len-1; $i++) {
$arr1 = $result;
$result = [];
// 數(shù)組第一個(gè)值和第二個(gè)值組合
foreach ($arr1 as $res) {
//數(shù)組第二個(gè)值...$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;
}
//需要計(jì)算的數(shù)組
$data = array(
array('白色','銀色','玫瑰金'),
array('64G','128G'),
array('移動(dòng)','電信','聯(lián)通'),
array('國(guó)行','港版')
);
//打印結(jié)果
$result = Cartesian($data);
print_r($result);
?>
Array
(
[0] => Array
(
[0] => 白色
[1] => 64G
[2] => 移動(dòng)
[3] => 國(guó)行
)
[1] => Array
(
[0] => 白色
[1] => 64G
[2] => 移動(dòng)
[3] => 港版
)
[2] => Array
(
[0] => 白色
[1] => 64G
[2] => 電信
[3] => 國(guó)行
)
[3] => Array
(
[0] => 白色
[1] => 64G
[2] => 電信
[3] => 港版
)
[4] => Array
(
[0] => 白色
[1] => 64G
[2] => 聯(lián)通
[3] => 國(guó)行
)
[5] => Array
(
[0] => 白色
[1] => 64G
[2] => 聯(lián)通
[3] => 港版
)
[6] => Array
(
[0] => 白色
[1] => 128G
[2] => 移動(dòng)
[3] => 國(guó)行
)
[7] => Array
(
[0] => 白色
[1] => 128G
[2] => 移動(dòng)
[3] => 港版
)
[8] => Array
(
[0] => 白色
[1] => 128G
[2] => 電信
[3] => 國(guó)行
)
[9] => Array
(
[0] => 白色
[1] => 128G
[2] => 電信
[3] => 港版
)
[10] => Array
(
[0] => 白色
[1] => 128G
[2] => 聯(lián)通
[3] => 國(guó)行
)
[11] => Array
(
[0] => 白色
[1] => 128G
[2] => 聯(lián)通
[3] => 港版
)
[12] => Array
(
[0] => 銀色
[1] => 64G
[2] => 移動(dòng)
[3] => 國(guó)行
)
[13] => Array
(
[0] => 銀色
[1] => 64G
[2] => 移動(dòng)
[3] => 港版
)
[14] => Array
(
[0] => 銀色
[1] => 64G
[2] => 電信
[3] => 國(guó)行
)
[15] => Array
(
[0] => 銀色
[1] => 64G
[2] => 電信
[3] => 港版
)
[16] => Array
(
[0] => 銀色
[1] => 64G
[2] => 聯(lián)通
[3] => 國(guó)行
)
[17] => Array
(
[0] => 銀色
[1] => 64G
[2] => 聯(lián)通
[3] => 港版
)
[18] => Array
(
[0] => 銀色
[1] => 128G
[2] => 移動(dòng)
[3] => 國(guó)行
)
[19] => Array
(
[0] => 銀色
[1] => 128G
[2] => 移動(dòng)
[3] => 港版
)
[20] => Array
(
[0] => 銀色
[1] => 128G
[2] => 電信
[3] => 國(guó)行
)
[21] => Array
(
[0] => 銀色
[1] => 128G
[2] => 電信
[3] => 港版
)
[22] => Array
(
[0] => 銀色
[1] => 128G
[2] => 聯(lián)通
[3] => 國(guó)行
)
[23] => Array
(
[0] => 銀色
[1] => 128G
[2] => 聯(lián)通
[3] => 港版
)
[24] => Array
(
[0] => 玫瑰金
[1] => 64G
[2] => 移動(dòng)
[3] => 國(guó)行
)
[25] => Array
(
[0] => 玫瑰金
[1] => 64G
[2] => 移動(dòng)
[3] => 港版
)
[26] => Array
(
[0] => 玫瑰金
[1] => 64G
[2] => 電信
[3] => 國(guó)行
)
[27] => Array
(
[0] => 玫瑰金
[1] => 64G
[2] => 電信
[3] => 港版
)
[28] => Array
(
[0] => 玫瑰金
[1] => 64G
[2] => 聯(lián)通
[3] => 國(guó)行
)
[29] => Array
(
[0] => 玫瑰金
[1] => 64G
[2] => 聯(lián)通
[3] => 港版
)
[30] => Array
(
[0] => 玫瑰金
[1] => 128G
[2] => 移動(dòng)
[3] => 國(guó)行
)
[31] => Array
(
[0] => 玫瑰金
[1] => 128G
[2] => 移動(dòng)
[3] => 港版
)
[32] => Array
(
[0] => 玫瑰金
[1] => 128G
[2] => 電信
[3] => 國(guó)行
)
[33] => Array
(
[0] => 玫瑰金
[1] => 128G
[2] => 電信
[3] => 港版
)
[34] => Array
(
[0] => 玫瑰金
[1] => 128G
[2] => 聯(lián)通
[3] => 國(guó)行
)
[35] => Array
(
[0] => 玫瑰金
[1] => 128G
[2] => 聯(lián)通
[3] => 港版
)
)
感謝各位的閱讀,以上就是“php開發(fā)商品怎么批量生成sku組合”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)php開發(fā)商品怎么批量生成sku組合這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。