2

重複の可能性:
PHPはすべての組み合わせを取ります

ナンバープレートのすべての組み合わせを表示するPHPで何かを作成することを考えています。例えば:

最大2つの値を入力できる3つのボックスがあります

好き

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

ピンコードの例

apmカードを使用するには、4つのピンコードを入力する必要があります

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の組み合わせがあり、すべての組み合わせを表示する必要があります

誰かが私を助けてくれるなら私は感謝するでしょう

4

1 に答える 1

5

コード:

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

これはまさにあなたが必要としているものだと思います...:-)

于 2012-04-06T23:32:42.110 に答える