全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

php计算多个集合的笛卡尔积实例详解

笛卡尔积

笛卡尔积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X*Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。

假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}

实现思路

先计算第一个集合和第二个集合的笛卡尔积,把结果保存为一个新集合。

然后再用新集合与下一个集合计算笛卡尔积,依此循环直到与最后一个集合计算笛卡尔积。

例如有以下几个集合,需要计算笛卡尔积

<?php
$sets = array(
 array('白色','黑色','红色'),
 array('透气','防滑'),
 array('37码','38码','39码'),
 array('男款','女款')
);
?>

代码如下:

<?php
/**
 * php 计算多个集合的笛卡尔积
 * Date: 2017-01-10
 * Author: fdipzone
 * Ver: 1.0
 *
 * Func
 * CartesianProduct 计算多个集合的笛卡尔积
 */

/**
 * 计算多个集合的笛卡尔积
 * @param Array $sets 集合数组
 * @return Array
 */
function CartesianProduct($sets){

 // 保存结果
 $result = array();

 // 循环遍历集合数据
 for($i=0,$count=count($sets); $i<$count-1; $i++){

 // 初始化
 if($i==0){
  $result = $sets[$i];
 }

 // 保存临时数据
 $tmp = array();

 // 结果与下一个集合计算笛卡尔积
 foreach($result as $res){
  foreach($sets[$i+1] as $set){
  $tmp[] = $res.$set;
  }
 }

 // 将笛卡尔积写入结果
 $result = $tmp;

 }

 return $result;

}

// 定义集合
$sets = array(
 array('白色','黑色','红色'),
 array('透气','防滑'),
 array('37码','38码','39码'),
 array('男款','女款')
);

$result = CartesianProduct($sets);
print_r($result);

?>

输出:

Array
(
 [0] => 白色透气37码男款
 [1] => 白色透气37码女款
 [2] => 白色透气38码男款
 [3] => 白色透气38码女款
 [4] => 白色透气39码男款
 [5] => 白色透气39码女款
 [6] => 白色防滑37码男款
 [7] => 白色防滑37码女款
 [8] => 白色防滑38码男款
 [9] => 白色防滑38码女款
 [10] => 白色防滑39码男款
 [11] => 白色防滑39码女款
 [12] => 黑色透气37码男款
 [13] => 黑色透气37码女款
 [14] => 黑色透气38码男款
 [15] => 黑色透气38码女款
 [16] => 黑色透气39码男款
 [17] => 黑色透气39码女款
 [18] => 黑色防滑37码男款
 [19] => 黑色防滑37码女款
 [20] => 黑色防滑38码男款
 [21] => 黑色防滑38码女款
 [22] => 黑色防滑39码男款
 [23] => 黑色防滑39码女款
 [24] => 红色透气37码男款
 [25] => 红色透气37码女款
 [26] => 红色透气38码男款
 [27] => 红色透气38码女款
 [28] => 红色透气39码男款
 [29] => 红色透气39码女款
 [30] => 红色防滑37码男款
 [31] => 红色防滑37码女款
 [32] => 红色防滑38码男款
 [33] => 红色防滑38码女款
 [34] => 红色防滑39码男款
 [35] => 红色防滑39码女款
)

总结

以上就是利用php实现计算多个集合的笛卡尔积的全部内容了,希望本文的内容对大家学习或者使用PHP能带来一定的帮助,如果有疑问大家可以留言交流。


# php  # 笛卡尔积  # 集合  # 集合笛卡尔积  # PHP实现笛卡尔积算法的实例讲解  # PHP笛卡尔积实现算法示例  # PHP实现数组的笛卡尔积运算示例  # PHP基于自定义函数生成笛卡尔积的方法示例  # PHP基于进程控制函数实现多线程  # PHP如何防止用户重复提交表单  # Nginx+php配置文件及原理解析  # thinkphp诸多限制条件下如何getshell详解  # PHP笛卡尔积实现原理及代码实例  # 笛卡尔  # 多个  # 第一个  # 第二个  # 几个  # 是指  # 遍历  # 其中一个  # 再用  # 保存为  # 依此  # 学中  # 有疑问  # gt  # Func  # Date  # Author  # Ver  # fdipzone  # array 


相关文章: 官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  如何将凡科建站内容保存为本地文件?  定制建站哪家更专业可靠?推荐榜单揭晓  如何通过西部建站助手安装IIS服务器?  专业公司网站制作公司,用什么语言做企业网站比较好?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  建站之星备案是否影响网站上线时间?  孙琪峥织梦建站教程如何优化数据库安全?  建站之星客服服务时间及联系方式如何?  如何在阿里云虚拟服务器快速搭建网站?  外贸公司网站制作哪家好,maersk船公司官网?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  微信小程序 五星评分(包括半颗星评分)实例代码  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  长沙企业网站制作哪家好,长沙水业集团官方网站?  简单实现Android验证码  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  建站之星如何优化SEO以实现高效排名?  网站制作说明怎么写,简述网页设计的流程并说明原因?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  太平洋网站制作公司,网络用语太平洋是什么意思?  高端建站三要素:定制模板、企业官网与响应式设计优化  如何使用Golang table-driven基准测试_多组数据测量函数效率  建站之星价格显示格式升级,你的预算足够吗?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  制作国外网站的软件,国外有哪些比较优质的网站推荐?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  威客平台建站流程解析:高效搭建教程与设计优化方案  电商平台网站制作流程,电商网站如何制作?  建站之星3.0如何解决常见操作问题?  家具网站制作软件,家具厂怎么跑业务?  简单实现Android文件上传  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  表情包在线制作网站免费,表情包怎么弄?  建站之星如何实现网站加密操作?  定制建站方案优化指南:企业官网开发与建站费用解析  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  如何在宝塔面板中修改默认建站目录?  定制建站是什么?如何实现个性化需求?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  建站之星如何快速解决建站难题?  建站主机类型有哪些?如何正确选型  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  网站建设制作、微信公众号,公明人民医院怎么在网上预约? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。