【问题标题】:PHP Possible combinations 3 arrays of 2 values [duplicate]PHP可能的组合2个值的3个数组[重复]
【发布时间】:2012-04-05 13:25:03
【问题描述】:

可能重复:
PHP take all combinations

我正在考虑用 PHP 制作一些东西来显示所有车牌组合。 例如:

您有 3 个框可以填写最多 2 个值

喜欢

BOX1 BOX2 BOX3
75   PM   M5 
7S   PH   MS
Z5   PN   H5
ZS   RM   HS
25   RH   N5
2S   RN   NS

NOT BOX1+BOX1+BOX1
It needs to show me
ex. 75-PM-M5
ex. 75-PH-MS
ex. 75-PN-MS
ex. 75-PM-H5
ex. 75-PH-H5
ex. 75-PN-H5
So, BOX1+BOX2+BOX3

The PHP script needs to calculate all the combinations for BOX1+BOX2+BOX3
So BOX1 value1 and value2 are ONE value not two separate values. 
In BOX2 value1 and value2 are also ONE value not two separate values and so on.

If I want all combinations of 
BOX1'91' + BOX2'HF' + BOX3'PF'
BOX1'74' + BOX2'RT' + BOX3'YT'

It will calculate an amount of 2x2x2=8 combinations 

ex. 91-HF-PF
ex. 91-HF-YT
ex. 91-RT-PF
ex. 91-RT-YT
ex. 74-HF-PF
ex. 74-HF-YT
ex. 74-RT-PF
ex. 74-RT-YT

密码示例

您需要输入 4 个密码才能使用您的 apm 卡

PIN1+PIN2+PIN3+PIN4
1    1    1    1
2    2    2    2
3    3    3    3
4    4    4    4
5    5    5    5
6    6    6    6
7    7    7    7
8    8    8    8
9    9    9    9
0    0    0    0

所以你总共有 10x10x10x10=10.000 个组合,它必须显示所有组合

如果有人能帮助我,我将不胜感激

【问题讨论】:

  • 查看我在此主题中的答案:stackoverflow.com/questions/9787051/php-take-all-combinations/…。它也应该适合你。
  • 这看起来像我需要的,但它也显示了猫猫猫。但这不是我想要的。它只需要显示 box1box2box3 的组合而不是 box1box1box1 .. 有什么想法吗?
  • SO : 没有元素可以重复(例如,没有 A-A-B、C-C-C 等)并且 A-B-C 被认为与 A-C-B 不同。我的假设正确吗?
  • 拜托,看看我的其他答案,让我知道它是否适合你......(它应该;-))

标签: php combinations combinatorics discrete-mathematics


【解决方案1】:

代码:

<?php

function combinations($arr, $n)
{
    $res = array();

    foreach ($arr[$n] as $item)
    {
        if ($n==count($arr)-1)
            $res[]=$item;
        else
        {
            $combs = combinations($arr,$n+1);

            foreach ($combs as $comb)
            {
                $res[] = "$item $comb";
            }
        }
    }
    return $res;
}

// Your ARRAY (first array is like 'BOX1', etc - )
// you can put as many items in each 'BOX' as you like... 
// and as many 'boxes' as you like
$words = array(array('A','B'),array('C','D'), array('E','F'));

$combos = combinations($words,0);  // ALWAYS, call it with 0 as the last parameter
print_r($combos);

?>

输出:

Array
(
    [0] => A C E
    [1] => A C F
    [2] => A D E
    [3] => A D F
    [4] => B C E
    [5] => B C F
    [6] => B D E
    [7] => B D F
)

我认为这正是您所需要的... :-)

【讨论】:

猜你喜欢
  • 2020-04-28
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
相关资源
最近更新 更多