我有一个用于web商店的产品配置程序。我必须为每个可能的项目组合生成一个"简单产品sku"。这是一个装薯片的盒子。盒子可以分为1、2或3个隔间,用于不同的口味。
1个隔间是微不足道的。只需迭代各种口味,并为每种口味吐出一个sku。2个隔间仍然很容易:只需使用php Math_Combinationals库使用组合(N选择2)。
3个隔间很难!
与口味必须独特的2个隔间不同,有三个隔间,你可以说:
BBQ,BBQ,普通
然而,我们不想为制作sku
烧烤,烧烤,平原和平原,烧烤,烧烤
因此,这不再是一个组合或置换函数。
我的想法是生成排列,然后为每种口味分配一个数值,将每一行相加,如果两行相加到同一个数字,它们就是重复的组合。只有重复的组合才能加起来达到相同的值。我是从Unix文件系统权限的工作方式来考虑这一点的——读、写和执行的八进制数字加起来就是7。有人知道如何选择正确的值(unix perms中的1,2,4)来实现这一点吗?
还有其他方法吗?
谢谢!
我不知道我是否完全理解这个问题,但这个呢:
<?php
//Generate fake combo
$choices = array('bbq', 'plain', 'one', 'two', 'three');
$combo = array();
$total = rand(1,6);
for ($x = 1; $x <= $total; $x++) {
$combo[] = $choices[array_rand($choices)];
}
var_dump($combo);
//Make SKU
$combo = array_unique($combo);
sort($combo);
$sku = implode('-', $combo);
echo $sku;