Version complète: sur le forum Webmaster Hub : Algoritme PHP
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Didier_S
bonjour,
j'ai lutte contre un algo récalcitrant, un coup de main serait fort apprécié.

Voila mon tableau de base :

CODE
Array
(
   [0] => Array
       (
           [0] => 1
           [1] => 2
       )

   [1] => Array
       (
           [0] => a
           [1] => b
           [2] => c
       )

   [2] => Array
       (
           [0] => X
           [1] => Y
           [2] => Z
       )

)


J'aimerais, à partir de ces données, créér un autre tableau, contenant toutes les combinaisons comportant un élément de chaque sous-tableau possible.
C'est à dire : 1-a-X , 1-a-Y, 1-a-Z, 1-b-X, 1-b-Y, ..... , 2-c-Z

Bien sur, le nombre d'éléments de chaque sous-tableau peut varier, ainsi que le nombre de tableaux...

Je pars donc de boucles imbriquées, dans ce style :
CODE
for ($n = 1; $n < count($a); $n++) {
       for ($i = 0; $i < count($a[$n]); $i++) {
              // traitement
       }
}


c'est sur la partie "traitement" que je galère, si une bonne âme pouvait me fournir ne serait-ce qu'une piste (sachant que je suis NUL en maths), je lui en serai très reconnaissant !

Si quelqu'un a déja eu à coder ça, un copier/coller fera l'affaire IMSTP2.gif

Merci d'avance
sarc
Salut !

Tu as une fonction pour faire une boucle dans un tableau tu sais !
foreach($tableau AS $clef=>$valeur)

Dans ton cas, avec $tableau le nom de ton tableau, tu peux faire :

CODE
foreach($tableau[0] AS $firstcarac)
{
 foreach($tableau[1] AS $secondcarac)
 {
   foreach($tableau[2] AS $thirdcarac)
   {
      echo "$firstcarac - $secondcarac - $thirdcarac <br>";
   }
 }
}
Didier_S
Oui, je comptais m'appuyer sur des foreach (notamment parce que les index ne sont pas incrémentaux)

Le problème étant que je peux avoir X éléments dans la référence finale, X étant un nombre compris, disons, entre 1 et 6...

Et c'est là que les problèmes commencent.

Je vais essayer d'imbriquer des foreach dans un while, et de stocker la valeur courante de chaque foreach dans un tableau temporaire, puis en tirer les références.

Si vous avez mieux, jsuis preneur wink.gif

-- Edit --

Voila où j'en suis :
CODE
function for_each ($a, $nCurrent, $nLimit) {
    global $aRef, $nDepth;
    while($nCurrent < $nLimit) {
 foreach ($a[$nCurrent] as $value) {
     echo "$value<br />";
 }
 $nCurrent++;
 for_each($a, $nCurrent, $nLimit);
    }
    return $aRef;
}

$nLimit = count($a); // ($a étant mon tableau principal)


je ne pense pas que je puisse m'en servir sans récursivité. c'est au niveau du echo "$value<br />"; que j'ai un problème; je devrais remplacer cette ligne par du code permettant de créér les chaines recherchées... je sens que je n'en suis plus très loin, mais je ne vois pas sur quoi partir: un foreach ? garder les valeurs dans un tableau ? comment le structurer ?
merci de vos lumières smile.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.