【PHP】商品集合的笛卡尔积算法

本文介绍了一种计算多个集合笛卡尔积的PHP方法。通过示例演示了如何将不同属性的商品组合成所有可能的搭配,适用于商品组合、参数配对等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Demo


    /**
    * 计算多个集合的笛卡尔积
    * @param Array $goods 集合
    * @return Array
    */
    public function CartesianProduct($goods)
    {
    	$returnData = [];

    	for ($i=0; $i < count($goods)-1 ; $i++) { 
    		
    		// 初始化
    		if($i == 0)
    		{
    			$returnData = $goods[$i];
    		}

    		$tempArray = []; // 临时数组

    		foreach ($returnData as $val) {
    			foreach ($goods[$i+1] as $v) {
    				$tempArray[] = $val.'+'.$v;
    			}
    		}
    		//重新赋值
    		$returnData = $tempArray;
    	}
    	return $returnData;
    }

Demo


$goods = [
    		['白色','黑色','红色'],
    		['39','40','41','42','43'],
    		['普通款','加绒款'],
    		['男款','女款']
    	];

$result = $this->CartesianProduct($goods);

print_r($result);

结果

Array
(
    [0] => 白色+39+普通款+男款
    [1] => 白色+39+普通款+女款
    [2] => 白色+39+加绒款+男款
    [3] => 白色+39+加绒款+女款
    [4] => 白色+40+普通款+男款
    [5] => 白色+40+普通款+女款
    [6] => 白色+40+加绒款+男款
    [7] => 白色+40+加绒款+女款
    [8] => 白色+41+普通款+男款
    [9] => 白色+41+普通款+女款
    [10] => 白色+41+加绒款+男款
    [11] => 白色+41+加绒款+女款
    [12] => 白色+42+普通款+男款
    [13] => 白色+42+普通款+女款
    [14] => 白色+42+加绒款+男款
    [15] => 白色+42+加绒款+女款
    [16] => 白色+43+普通款+男款
    [17] => 白色+43+普通款+女款
    [18] => 白色+43+加绒款+男款
    [19] => 白色+43+加绒款+女款
    [20] => 黑色+39+普通款+男款
    [21] => 黑色+39+普通款+女款
    [22] => 黑色+39+加绒款+男款
    [23] => 黑色+39+加绒款+女款
    [24] => 黑色+40+普通款+男款
    [25] => 黑色+40+普通款+女款
    [26] => 黑色+40+加绒款+男款
    [27] => 黑色+40+加绒款+女款
    [28] => 黑色+41+普通款+男款
    [29] => 黑色+41+普通款+女款
    [30] => 黑色+41+加绒款+男款
    [31] => 黑色+41+加绒款+女款
    [32] => 黑色+42+普通款+男款
    [33] => 黑色+42+普通款+女款
    [34] => 黑色+42+加绒款+男款
    [35] => 黑色+42+加绒款+女款
    [36] => 黑色+43+普通款+男款
    [37] => 黑色+43+普通款+女款
    [38] => 黑色+43+加绒款+男款
    [39] => 黑色+43+加绒款+女款
    [40] => 红色+39+普通款+男款
    [41] => 红色+39+普通款+女款
    [42] => 红色+39+加绒款+男款
    [43] => 红色+39+加绒款+女款
    [44] => 红色+40+普通款+男款
    [45] => 红色+40+普通款+女款
    [46] => 红色+40+加绒款+男款
    [47] => 红色+40+加绒款+女款
    [48] => 红色+41+普通款+男款
    [49] => 红色+41+普通款+女款
    [50] => 红色+41+加绒款+男款
    [51] => 红色+41+加绒款+女款
    [52] => 红色+42+普通款+男款
    [53] => 红色+42+普通款+女款
    [54] => 红色+42+加绒款+男款
    [55] => 红色+42+加绒款+女款
    [56] => 红色+43+普通款+男款
    [57] => 红色+43+普通款+女款
    [58] => 红色+43+加绒款+男款
    [59] => 红色+43+加绒款+女款
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值