2012-04-05 1 views
1

Можно создать дубликат:
PHP take all combinationsPHP Возможные комбинации 3 массивы из 2 значений

Я имею в виду сделать что-то в 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 

Итак, у вас есть общая комбинация 10x1 0x10x10 = 10.000 комбинаций и он должен показать все комбинации

если кто-то может помочь мне, я был бы благодарен

+0

Отметьте мой ответ в этой теме: http://stackoverflow.com/questions/9787051/php-take-all-combinations/9787438#9787438. Это должно сработать и для вас. –

+0

Это похоже на то, что мне нужно, но также показывает кошку-кошку. Но это не то, что я хочу. Ему нужно показать только комбинации box1box2box3, а не box1box1box1 .. какие-нибудь идеи? – MOTIVECODEX

+0

SO: Ни один элемент не может быть повторен (например, NO A-A-B, C-C-C и т. Д.) И A-B-C считается отличным от A-C-B. Правильны ли мои предположения? –

ответ

4

Код:

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

I подумайте ЭТО ТОЧНО, что вам нужно ... :-)

+1

Это было именно то, что мне нужно! +1 – user1105056

Смежные вопросы