2011-09-07 2 views
0

Cela me rend fou, mais j'ai lutté avec tout cela maintenant midi (im GMT + 2;)).Comment calculer/générer une chaîne avec toutes les valeurs possibles dans un tableau?

Je veux faire un assez (je croyais mais s'est rendu compte autrement ..) tâche simple.

Disons que j'ai un tableau qui ressemble à ceci:

Array 
(
    [0] => Array 
     (
      [OptionID] => 8748 
      [Values] => Array 
       (
        [0] => 11614 
        [1] => 11615 
       ) 
     ) 
    [1] => Array 
     (
      [OptionID] => 8749 
      [Values] => Array 
       (
        [0] => 11616 
        [1] => 11617 
       ) 
     ) 
) 

Ce tableau est pour générer toutes les options possibles avec un produit. Supposons que OptionID 8748 signifie 'Taille' et que les valeurs de ce tableau sont 'L' & 'XL'. L'optionID 8749 peut être 'Couleur' ​​avec les valeurs 'Rouge' et 'Noir'.

Je veux réaliser la tâche simple d'obtenir les quatre combinaisons uniques de ce produit dans une chaîne comme:

11614 + 11616 11614 + 11617 11615 + 11616 11615 + 11617

Mais , avec un produit différent, il pourrait y avoir une troisième option de produit, donc il devrait être capable de travailler avec une profondeur illimitée.

Répondre

1

essentiellement

$result = array_cartesian(array_pluck($a, 'Values')); 

et voici les fonctions d'aide:

function array_pluck($a, $key) { 
    $r = array(); 
    foreach($a as $v) 
     $r[] = $v[$key]; 
    return $r; 
} 

function array_cartesian($_) { 
    if(count($_) == 0) 
     return array(array()); 
    $a = array_shift($_); 
    $c = array_cartesian($_); 
    $r = array(); 
    foreach($a as $v) 
     foreach($c as $p) 
      $r[] = array_merge(array($v), $p); 
    return $r; 
} 
+0

Votre monsieur, vous êtes mon héros personnel pour aujourd'hui! Merci beaucoup! +10 – Ben

Questions connexes