商城规格解决方法 ----笛卡尔积

<?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 );
 
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值