在开发商城系统的时候,相信很多人遇到商品sku管理的问题。sku的生成方式是根据所有规格进行组合,也就是数学上的笛卡尔积。

生成字符串

<?phpfunction Cartesian($data){$len = count($data);for ($i = 0; $i< $len-1; $i++) {if ($i === 0) {// 数组第一个值$result = $data[0];}$temp = [];// 数组第一个值和第二个值组合foreach ($result as $res) {//数组第二个值...$i+1foreach($data[$i+1] as $sec){$temp[] = $res . '-' . $sec;}$result = $temp;}}return $result;
}//需要计算的数组
$data = array(array('白色','银色','玫瑰金'),array('64G','128G'),array('移动','电信','联通'),array('国行','港版')
);//打印结果
$result = Cartesian($data);
print_r($result);
?>

生成数组格式

<?phpfunction Cartesian($arr, $tmp = [], $n_arr = []){foreach (array_shift($arr) as $v) {$tmp[] = $v;if ( $arr ) {$n_arr = Cartesian($arr, $tmp, $n_arr);} else {$n_arr[] = $tmp;}array_pop($tmp);}return $n_arr;}//需要计算的数组
$data = array(array('白色','银色','玫瑰金'),array('64G','128G'),array('移动','电信','联通'),array('国行','港版')
);//打印结果
$result = Cartesian($data);
print_r($result);?>

结果


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

参考https://blog.csdn.net/bgxwpp/article/details/103678666

php批量生成电商sku列表(笛卡尔积)相关推荐

  1. php计算笛卡尔积批量生成电商sku列表

    在开发商城系统的时候,相信很多人遇到商品sku管理的问题.sku的生成方式是根据所有规格进行组合,也就是数学上的笛卡尔积,我用php写了两种方式,记录一下. 1.第一种,生成字符串 <?phpf ...

  2. 想进某电商公司?建议学会电商 sku 的全排列算法!

    前言 前段时间在掘金看到一个热帖 <今天又懒得加班了,能写出这两个算法吗?带你去电商公司写商品中心>,里面提到了一个比较有意思故事,大意就是一个看似比较简单的电商 sku 的全排列组合算法 ...

  3. Vue 的电商 SKU 表单配置组件

    下载地址Vue 的电商 SKU 表单配置组件,多条件筛选计算价格和库存. dd:

  4. 前端电商 sku 的全排列算法

    前端电商 sku 的全排列算法 什么是sku 聊聊常见的需求 解决思路 思路分解 上代码 什么是sku 针对电商而言: 1.SKU是指一款商品,每款都有出现一个SKU,便于电商品牌识别商品. 2.一款 ...

  5. spu是什么计算机软件,电商sku和spu的区别

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 电商sku和spu的区别是: 1.SPU:标准化产品单元.SPU=Standard Product Unit(标准化产品单元).S ...

  6. 如何用App工厂免费生成电商应用

    App工厂(电商)旨在为用户提供一键生成电商应用的便捷方式.深度利用Mob平台的ShopSDK,结合完善的UI构成一个成熟的电商应用.大量节省同类应用开发的成本和周期以及对专业开发团队的依赖,同时提供 ...

  7. 前端电商 SKU 的全排列算法很难吗?学会这个套路,彻底掌握排列组合。

    前言 前段时间在掘金看到一个热帖 <今天又懒得加班了,能写出这两个算法吗?带你去电商公司写商品中心>,里面提到了一个比较有意思故事,大意就是一个看似比较简单的电商 sku 的全排列组合算法 ...

  8. 电商商品列表应以SPU还是SKU展示商品?

    我们先了解下,SPU和SKU的概念,方便大家跟上思路,如下: SPU(Standard Product Unit):标准化产品单元.是商品信息聚合的最小单位,是一组可复用.易检索的标准化信息的集合,该 ...

  9. 两种常见电商sku的设计

    在电商系统中,商品sku和sku模型至关重要,是整个电商系统的重要组成部分之一,下面通过一些简单的知识整理和分析,讲解一下sku属性管理和常见的建模方式. 一.sku的定义及概念的统一 1.什么是sk ...

最新文章

  1. shell指令可以直接在终端输入吗_shell不是LInux系统的壳吗?咋还能脚本编程了?...
  2. easyui 消息框按钮文字修改
  3. Matlab ANN人工神经网络 validation checks
  4. 那些年一起学习的PHP(三)
  5. java写入txt文件 不替换_java非覆盖写入文件及在输出文本中换行
  6. python知识笔记_[Python笔记]第一篇:基础知识
  7. 安卓手机怎么root_怎么在腾讯手机管家中一键获取Root权限
  8. 【Android Studio安装部署系列】二十三、Android studio查看Gradle版本号
  9. pandas小记:pandas高级功能
  10. 11个值得掌握的Java代码性能优化技巧
  11. 详细讲解电脑怎么录屏 电脑录制视频的方法
  12. python爬虫爬取豆瓣电影排行榜,并写进csv文件,可视化数据分析
  13. sensor尺寸、35mm等效焦距、FOV、ZOOM倍数的换算关系
  14. 2 路 2GSPS/2.6GSPS/3GSPS 14bit AD 采集卡/ FMC 子卡 (AD9208/ AD9689)
  15. 关于嵌入式系统开发工程师相关问题解答
  16. 怀旧服一直显示正在登录服务器,怀旧服显示正在登录游戏服务器
  17. D3D11和D3D12多线程渲染框架的比较(一)
  18. 【新书推荐】【2021】超大规模集成电路、通信和信号处理进展:VCAS 2019精选会议录
  19. 北京中医药大学计算机应用基础作业,北京中医药大学网络教育高起点语文入学考试模拟题(单选一)...
  20. 【模式识别/机器学习】支持向量机SVM浅析

热门文章

  1. 水题找自信——问题 B: 找x、问题 I: 锤子剪刀布、问题 H: 部分A+B、问题 A: 排序、PAT Ranking、问题 C: EXCEL排序
  2. 《PR基础教程入门篇-学习笔记》-012
  3. 计算机网络(10): 网络层——网络地址转换NAT技术
  4. ubuntu18.04实时显示网速CPU温度等
  5. VE视频引擎短视频sdk支持的AE模板功能列表
  6. 八、kubernetes Pod控制器
  7. webpack 处理字体_如何在webpack中更优雅的处理字体图标
  8. 企业信息化战略与实施-练习题
  9. 千古绝唱---------《钗头凤》
  10. 张飞老师硬件第八部视频整理——无刷电机知识点整理【入门】