笛卡尔积 php,PHP 笛卡尔积

笛卡尔积又叫笛卡尔乘积,是一个叫笛卡尔的人提出来的。

简单的说就是两个集合相乘的结果。

具体的定义去看看有关代数系的书的定义。

直观的说就是

集合A{a1,a2,a3} 集合B{b1,b2}

他们的 笛卡尔积 是 A*B ={(a1,b1),(a1,b2),(a2,b1),(a2,b2),(a3,b1),(a3,b2)}

任意两个元素结合在一起

/**

* 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

// 初始化

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码女款

)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值