笛卡尔积又叫笛卡尔乘积,是一个叫笛卡尔的人提出来的。 简单的说就是两个集合相乘的结果。具体的定义要看看有关代数系的书的定义。这篇文章主要给大家介绍了利用php计算多个集合的笛卡尔积的方法实例,需要的朋友可以参考借鉴,下面来一起看看吧。
笛卡尔积
笛卡尔积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X*Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。
假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),2),(b,2)}
实现思路
先计算第一个集合和第二个集合的笛卡尔积,把结果保存为一个新集合。
然后再用新集合与下一个集合计算笛卡尔积,依此循环直到与最后一个集合计算笛卡尔积。
例如有以下几个集合,需要计算笛卡尔积
代码如下:
/**
- 计算多个集合的笛卡尔积
- @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('白色','女款')
);
$result = CartesianProduct($sets);
print_r($result);
?>
输出:
白色透气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能带来一定的帮助,如果有疑问大家可以留言交流。