Rumah >pembangunan bahagian belakang >tutorial php >PHP membangunkan produk untuk menjana kombinasi SKU dalam kelompok (dua kaedah)

PHP membangunkan produk untuk menjana kombinasi SKU dalam kelompok (dua kaedah)

藏色散人
藏色散人ke hadapan
2022-11-28 15:50:247091semak imbas

Baru-baru ini, saya sedang membangunkan sistem e-dagang dengan modul produk. Walaupun penambahan, pemadaman, pengubahsuaian dan semakan tidak dapat dielakkan, aspek produk lebih kepada kesan panggilan js dan kesan lain. Apa yang lebih penting ialah penjanaan kelompok dan gabungan SKU produk.

Sistem yang berbeza mempunyai keperluan yang berbeza Keperluan berikut adalah untuk menjana SKU dalam kelompok selepas menambah pelbagai spesifikasi. [Pembelajaran yang disyorkan: Tutorial video PHP]

PHP membangunkan produk untuk menjana kombinasi SKU dalam kelompok (dua kaedah)

Perenderan

PHP membangunkan produk untuk menjana kombinasi SKU dalam kelompok (dua kaedah)

Kod halaman ada di sini Apatah lagi, cara untuk menjana SKU adalah dengan menggabungkan semua spesifikasi, iaitu produk Cartesian dalam matematik saya menulis dua kaedah dalam PHP dan merekodkannya.

Kaedah pertama ialah menjana rentetan

<?php

function Cartesian($data){
    $len = count($data);

    for ($i = 0; $i< $len-1; $i++) {
        if ($i === 0) {
            // 数组第一个值
            $result = $data[0];
        }

        $temp = [];
        // 数组第一个值和第二个值组合
        foreach ($result as $res) {
            //数组第二个值...$i+1
            foreach($data[$i+1] as $sec){
                $temp[] = $res . &#39;-&#39; . $sec;
            }
            $result = $temp;
        }
    }

    return $result;
}

//需要计算的数组
$data = array(
 array(&#39;白色&#39;,&#39;银色&#39;,&#39;玫瑰金&#39;),
 array(&#39;64G&#39;,&#39;128G&#39;),
 array(&#39;移动&#39;,&#39;电信&#39;,&#39;联通&#39;),
 array(&#39;国行&#39;,&#39;港版&#39;)
);

//打印结果
$result = Cartesian($data);
print_r($result);
?>

Dalam pembangunan sebenar, anda hanya perlu menjana tatasusunan dua dimensi di atas untuk digabungkan Kesannya adalah seperti berikut:

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

Kedua, jana format tatasusunan

<?php

function Cartesian($data){
    $len = count($data);

    // 取第一个集合数组值
    $result = $data[0];
    for ($i = 0; $i< $len-1; $i++) {
        $arr1 = $result;
        $result = [];
        // 数组第一个值和第二个值组合
        foreach ($arr1 as $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(&#39;白色&#39;,&#39;银色&#39;,&#39;玫瑰金&#39;),
 array(&#39;64G&#39;,&#39;128G&#39;),
 array(&#39;移动&#39;,&#39;电信&#39;,&#39;联通&#39;),
 array(&#39;国行&#39;,&#39;港版&#39;)
);

//打印结果
$result = Cartesian($data);
print_r($result);

?>

Keluaran dan hasil cetakan

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] => 港版
        )

)

Artikel ini dicetak semula, alamat asal: https://juejin. cn/post/7170889538343501838

Atas ialah kandungan terperinci PHP membangunkan produk untuk menjana kombinasi SKU dalam kelompok (dua kaedah). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.im. Jika ada pelanggaran, sila hubungi admin@php.cn Padam