Didier_S Posté 31 Juillet 2005 Posté 31 Juillet 2005 bonjour, j'ai lutte contre un algo récalcitrant, un coup de main serait fort apprécié. Voila mon tableau de base : 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 : 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 Merci d'avance
Sarc Posté 31 Juillet 2005 Posté 31 Juillet 2005 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 : foreach($tableau[0] AS $firstcarac){ foreach($tableau[1] AS $secondcarac) { foreach($tableau[2] AS $thirdcarac) { echo "$firstcarac - $secondcarac - $thirdcarac <br>"; } }}
Didier_S Posté 31 Juillet 2005 Auteur Posté 31 Juillet 2005 (modifié) 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 -- Edit -- Voila où j'en suis : 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 Modifié 1 Août 2005 par Didier_S
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant