描述:在我们的电商系统应用中,最常见一块业务模块便是商品的规格属性及对应的库存了,我们举个简单的例子:比如最新出来的 iPhone ,iPhone 14 Pro 颜色有暗紫色 金色 银色 深空黑色,存储空间有 128G 256G 512G 1T,版本有 国行 美版 港版,通讯方式有移动 联通 电信(暂时忽略掉,现在都支持全网通了)。
问:这些规格组合在一起,一共有多少种库存?
答:学过的数学的童鞋们可以很快的算出来有多少种库存了,其实就是数学中的排列组合。颜色4种,存储空间4种,版本3种,通讯方式1种(全网通)。那么就是 4 x 4 x 3 x 1 = 48种了。
可是在应用到PHP中,该如何用算法实现呢?
这就要用到 笛卡尔积了,即两个集合中元素相乘,得出结果。
笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积。
示例1 do while
思路:
1、取出二位数组第一个数组,并分割成单个元素;
2、然后再取剩余数组$data中第一个数组
3、foreach第一次分割的数组元素与分割第2次array_shift的数组元素两两相乘,赋值到临
给变量temp中,直到$data为空时。
示例2 笛卡尔积递归
递归顾名思义就是:程序调用自身称为递归
示例3 笛卡尔积排列组合
示例4 笛卡尔积 array_merge
案例展示:上述4个方法中随便调用哪一个即可
终端打印结果
按照 颜色 存储空间 版本 网络类型 一共是 4 x 4 x 3 x 1 = 48
项目中有觉得有用的童鞋们可以参考下
领取专属 10元无门槛券
私享最新 技术干货