Combiner les éléments de n tableaux

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Combiner les éléments de n tableaux

Re: Combiner les éléments de n tableaux

par binboum » 11 avr. 2012, 14:17

Je me demande s'il ne suffirait pas, lorsqu'on récupère les choix de l'utilisateur, d'écrire qqch dans le enre de:
$tableau_1 = issest($_POST['choix1']) ? $_POST['choix1'] : array();

Oui l'écriture ternaire, plus rapide qu'un if, c'est justement ça que tu dois faire, et tu devrais faire 2 boucles grand maximum je pense.

Une pour les catégories, une pour tes traitements.

Re: Combiner les éléments de n tableaux

par sirakawa » 11 avr. 2012, 13:10

Je me demande s'il ne suffirait pas, lorsqu'on récupère les choix de l'utilisateur, d'écrire qqch dans le enre de:
$tableau_1 = issest($_POST['choix1']) ? $_POST['choix1'] : array();

Combiner les éléments de n tableaux

par phd » 10 avr. 2012, 22:37

Bonjour,

A l'aide d'un formulaire comportant des cases à cocher réparties en différentes catégories, je récupère les informations sélectionnées par l'utilisateur.

Je souhaite à présent combiner chaque choix d'une catégorie avec chaque choix dans les autres catégories et présenter la liste des combinaisons à l'utilisateur.

Si l'utilisateur choisit une ou plusieurs options dans chaque catégorie, il est relativement aisé de bâtir une imbrication de boucles foreach, puisque leur nombre sera toujours identique. Par exemple, si le formulaire contient 3 catégories d'options, le code sera :
foreach ($form['cat1'] as $k1 => $val1)
	{
	foreach ($form['cat2'] as $k2 => $val2)
		{
		foreach ($form['cat3'] as $k3 => $val3)
			{
			echo  $val1.' _ '.$val2.' _ '.$val3.'<br/>';
			}
		}
	}

Supposons la variable $_POST suivante :
Array
(
    [cat1] => Array
        (
            [0] => maison
            [1] => demeure
        )

    [cat2] => Array
        (
            [0] => nuage
            [1] => soleil
        )

    [cat3] => Array
        (
            [0] => heureux
            [1] => triste
        )

)
On obtient donc la liste :

maison _ nuage _ heureux
maison _ nuage _ triste
maison _ soleil _ heureux
maison _ soleil _ triste
demeure_ nuage _ heureux
demeure_ nuage _ triste
demeure _ soleil _ heureux
demeure _ soleil _ triste

Là où ça se complique sérieusement c'est si l'utilisateur ne choisit pas d'options dans une catégorie.

Par exemple, s'il ne choisit aucune option dans cat2, la liste serait :

maison _ heureux
maison _ triste
demeure _ heureux
demeure _ triste


Mon problème est donc de concevoir un code PHP qui tienne compte du fait que l'utilisateur choisit ou non des options dans les différentes catégories, car cela déterminera le nombre de boucles foreach.

Merci d'avance pour vos conseils.