首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php产品选取器的有趣数学-排列,组合,介于两者之间的东西

问php产品选取器的有趣数学-排列,组合,介于两者之间的东西
EN

Stack Overflow用户
提问于 2014-04-12 02:18:22
回答 1查看 173关注 0票数 1

我有一个网上商店的产品配置器。我必须为每个可能的项目组合生成一个“简单的产品sku”。这是一个盒子,里面装着一袋袋薯片。这个盒子可以分成1个,2个或3个隔间,根据不同的口味。

1个隔间是微不足道的。只需迭代每个口味,并为每个口味吐出一个sku。2划分仍然很简单:只需使用php Math_Combinatorials库的组合(N选择2)即可。

3个车厢很难!

与两个隔间的选择不同的是,口味必须是独特的,有三个隔间,你可以说:

BBQ,BBQ,普通

但是,我们不想为其创建sku

BBQ,BBQ,普通和普通,BBQ,BBQ

所以,这不再是一个组合或置换函数。

我的想法是生成排列,然后为每种口味分配一个数值,将每行相加,如果两行相加到相同的数字,则它们是重复的组合。只有重复的组合才应相加为相同的值。我从Unix文件系统权限的工作原理来考虑这个问题--读、写和执行的八进制数加起来是7。有人知道如何选择正确的值( unix perms中的1,2,4)来使其工作吗?

有没有其他的方法呢?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-04-12 02:37:25

我不知道我是否完全理解了这个问题,但是这个呢:

代码语言:javascript
复制
<?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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23019884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档