假设集合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 。
相关推荐:
微信开发的分享接口 相关内容
css实现箭头和带缺口提示框
前端工程师学习基础知识
以上就是如何通过php 计算多个集合的笛卡尔积的相关知识的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答