溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php開發(fā)商品怎么批量生成sku組合

發(fā)布時(shí)間:2022-11-28 16:24:24 來(lái)源:億速云 閱讀:179 作者:iii 欄目:編程語(yǔ)言

這篇文章主要講解了“php開發(fā)商品怎么批量生成sku組合”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“php開發(fā)商品怎么批量生成sku組合”吧!

不同的系統(tǒng)有不同的需求,以下的需求就是要添加完各種規(guī)格后批量生成sku的。

php開發(fā)商品怎么批量生成sku組合

效果圖

php開發(fā)商品怎么批量生成sku組合

頁(yè)面代碼這里就不說(shuō)了,sku的生成方式是根據(jù)所有規(guī)格進(jìn)行組合,也就是數(shù)學(xué)上的笛卡爾積,我用php寫了兩種方式,記錄一下。

第一種,生成字符串

<?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);
?>

實(shí)際開發(fā)中,你只要生成上面的二維數(shù)組就可以組合了,效果如下:

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)通-港版
)

第二種,生成數(shù)組格式

<?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);

?>

輸出打印結(jié)果

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)注!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI