PHP Possible combinations 3 arrays of 2 values [duplicate]

谁都会走 提交于 2021-02-19 07:41:40

问题


Possible Duplicate:
PHP take all combinations

I'm thinking of making something in PHP that will show me all combinations of license plates. For example:

You have 3 boxes you can fill in max 2 values

Like

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

Example pincode

you need to enter 4 pincodes to use your apm card

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

So you have in total combination of 10x10x10x10=10.000 combinations and it has to show all combinations

if someone could help me out I would be thankful


回答1:


Code :

<?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);

?>

Output :

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
)

I think THIS is EXACTLY what you need... :-)



来源:https://stackoverflow.com/questions/10029472/php-possible-combinations-3-arrays-of-2-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!