2012-04-05 9 views
1

Possible en double:
PHP take all combinationsPHP combinaisons possibles 3 tableaux de 2 valeurs

Je pense à faire quelque chose en PHP qui me montrer toutes les combinaisons de plaques d'immatriculation. Par exemple:

Vous avez 3 boîtes vous pouvez remplir des valeurs max 2

Comme

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 

Exemple pincode

vous devez entrer 4 codes PIN pour utiliser votre carte 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 

Vous avez donc une combinaison totale de 10x1 0x10x10 = 10.000 combinaisons et il doit montrer toutes les combinaisons

si quelqu'un pouvait me aider je serais reconnaissant

+0

Vérifiez ma réponse dans ce sujet: http://stackoverflow.com/questions/9787051/php-take-all-combinations/9787438#9787438. Ça devrait marcher pour toi aussi. –

+0

Cela ressemble à ce dont j'ai besoin, mais il montre aussi chat chat chat. Mais ce n'est pas ce que je veux. Il doit montrer seulement des combinaisons de box1box2box3 pas box1box1box1 .. des idées? – MOTIVECODEX

+0

SO: Aucun élément ne peut être répété (par exemple, NO A-A-B, C-C-C, etc.) et A-B-C est considéré comme différent de A-C-B. Mes hypothèses sont-elles correctes? –

Répondre

4

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

?> 

Sortie:

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 pense que c'est EXACTEMENT ce dont vous avez besoin ... :-)

+1

C'était exactement ce dont j'avais besoin! +1 – user1105056

Questions connexes