首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP 实现数学中的排列组合 笛卡尔积

描述:在我们的电商系统应用中,最常见一块业务模块便是商品的规格属性及对应的库存了,我们举个简单的例子:比如最新出来的 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

项目中有觉得有用的童鞋们可以参考下

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20221222A00RXX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券