Page 1 sur 2
ELSEIF dynamique
Posté : 07 mai 2007, 15:55
par Wells83
Bonjour à tous. Je doute que ce que je veuille faire soit possible mais bon je soumet quand même à votre analyse.
J'aimerais faire un nombre de elseif de façon dynamique. Cad avec un structure normale:
if
elseif
elseif
elseif
elseif
else
Sauf que le nb de elsif peut varier de façon dynamique. Y a t'il un moyen qqonque de faire ca?
Merci à tous pour votre lecture.
Posté : 07 mai 2007, 16:07
par thehawk
Regarde , peut etre que les boucles pourront te sortir d'affaire

Posté : 07 mai 2007, 16:19
par Wells83
Malheureusement je ne vous dérangerais pas si c'etait si simple.
On ne peut pas "casser" apparemment la structure if/elseif. Mettre un while ou un for entre les deux donne une erreur de parsing.
Posté : 07 mai 2007, 16:55
par zeus
Plutôt que de te donner une solution qui sera, selon moi, bancale, j'aimerais que tu nous expliques pourquoi est-ce que tu veux faire ça
Il est surement possible d'aborder le problème autrement

Posté : 07 mai 2007, 17:24
par thehawk
Comme par exemple avec un systeme de switch qui eviterai un certain nombre de complication
Posté : 09 mai 2007, 18:27
par Invité
non car avec un swhitch si ma mémoire est bonne on test une seule variable.
or dans mon cas, chaque elseif teste une variable différente.
Posté : 09 mai 2007, 19:22
par jojolapine
justement si ton cas est si spécial, décrit le plus en détail

Posté : 09 mai 2007, 20:19
par titerm
Tu veux une réponse a un problème mais tu ne veux pas expliquer ton problème, c'est pas gagné.
Pour ton infos, le switch a de multiple facette et on peut très bien avec un switch tester autant de variable que l'on veux. Certaine syntaxe sont simplement assez rare mais existent et fonctionnent tout a fait. Tu vois, je fais un peu comme toi, du teasing...

Posté : 10 mai 2007, 09:14
par Invité
ok voila un peu plus concrètement le cas de figure:
if($toto[0]>0).....
elseif($toto[1]>0).....
elseif($toto[2]>0).....
elseif($toto[3]>0).....
else .....
le tableau étant de dimension variable.
Posté : 10 mai 2007, 13:21
par Sékiltoyai
Avec un while tout simplement :
$i=0;
while(isset($toto[$i]) && $toto[$i]<=0)
{
$i++;
}
if(isset($toto[$i]))
{
// code...
}
else
{
// code...
}
Posté : 11 mai 2007, 10:11
par Wells83
si je comprend bien ton code, c'est le $i le plus élevé qui sera prit en compte non?
Or moi je veux que se soit le moins. Ou alors j'ai pas saisie ton code complètement.
Posté : 11 mai 2007, 12:31
par Genova
Salut,
si tu veux vérifier les données d'un tableau il te suffit d'utiliser un while () ou un foreach () pour le parcourir.
Posté : 11 mai 2007, 14:06
par titerm
Le code de sékil

correspond exactement a la série de ifelse que tu as donnée.
Dans tes if, le premier qui est vérifié est executer et seulement lui.
Il fait exactement la meme chose dans un while, il cherche le premier elemant du tableau qui est > 0, puis effectue le code dans le if si il a en a trouvé 1 et le code du else si aucun élément du tableau n'étaient > 0.
Posté : 11 mai 2007, 14:44
par Wells83
Oki effectivement j'avias mal lu le truc. Bon maintenant passont au cas qui m'interesse et qui lui est a mon avis mort:
if($a>0).....
elseif($toto[1]>0).....
elseif($toto[2]>0).....
elseif($toto[3]>0).....
elseif($b>0).....
else .....
$toto ayant tjs un nb d'entre dynamique.
Posté : 15 mai 2007, 09:55
par dogmongo
c'est pour traiter des données en sortie de table ? une requête en gros ?