笛卡尔乘积-电商网站商品sku组合算法应用

小文blog小文 2018-07-12 11:14 1264人围观

笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。
利用笛卡尔乘积算法很方便的应用在电商网站商品sku组合上面,应用实例如下:

$data = [
    ['红色','黄色','黑色'],
    ['8G','12G','64G'],
    ['标准','套餐1','套餐2'],
    //...
];
function getCartesian(array $data) {
    $count     = count ($data);
    //初始化笛卡尔集合
    $cartesian = $data[0];
    //依次用这个集合和data数组的下一个集合去做两两组合
    for ($i = 1; $i < $count; $i++) {
        $temp = [];
        foreach ($cartesian as $v1) {
            foreach ($data[$i] as $v2) {
                $temp[] = $v1 . '|' . $v2;
            }
        }
        //组合完后覆盖笛卡尔集合
        $cartesian = $temp;
    }
    return $cartesian;
}
var_dump(getCartesian($data));
/*
[
    '红色|8G|标准',
    '红色|8G|套餐1',
    ...
]*/

转载请注明来自小文blog,本文标题:笛卡尔乘积-电商网站商品sku组合算法应用

发布评论
生活是一场戏,主角当累了,你亦可成为观众,停下脚步,歇一歇