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.