(bon, d'accord, pour une fonction de plusieurs variables, on utilisera plusieurs boucles (foreach) imbriquées.
Non, la bonne manière de faire est d’avoir qu’une boucle foreach, et d’avoir un objet de type "traversable" qui va itérativement renvoyer toutes les combinaisons de valeur de variable possibles.
D’ailleurs on ne pourrait pas du tout s’en sortir avec des foreach imbriquées, car le nombre de variable est variable.