ELSEIF dynamique

Eléphant du PHP | 113 Messages

07 mai 2007, 15:55

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.

Mammouth du PHP | 991 Messages

07 mai 2007, 16:07

Regarde , peut etre que les boucles pourront te sortir d'affaire :wink:
DevOps, Symfony4, Hoa

Eléphant du PHP | 113 Messages

07 mai 2007, 16:19

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 mai 2007, 16:55

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 :-k

Il est surement possible d'aborder le problème autrement ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 991 Messages

07 mai 2007, 17:24

Comme par exemple avec un systeme de switch qui eviterai un certain nombre de complication
DevOps, Symfony4, Hoa

Invité
Invité n'ayant pas de compte PHPfrance

09 mai 2007, 18:27

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.

ViPHP
ViPHP | 3607 Messages

09 mai 2007, 19:22

justement si ton cas est si spécial, décrit le plus en détail ;-)

Mammouth du PHP | 505 Messages

09 mai 2007, 20:19

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... :)

Invité
Invité n'ayant pas de compte PHPfrance

10 mai 2007, 09:14

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.

ViPHP
ViPHP | 5924 Messages

10 mai 2007, 13:21

Avec un while tout simplement :
$i=0;
while(isset($toto[$i]) && $toto[$i]<=0)
{
$i++;
}

if(isset($toto[$i]))
{
// code...
}
else
{
// code...
}

Eléphant du PHP | 113 Messages

11 mai 2007, 10:11

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.

ViPHP
ViPHP | 928 Messages

11 mai 2007, 12:31

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.

Mammouth du PHP | 505 Messages

11 mai 2007, 14:06

Le code de sékil :wink: 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.

Eléphant du PHP | 113 Messages

11 mai 2007, 14:44

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.

Mammouth du PHP | 804 Messages

15 mai 2007, 09:55

c'est pour traiter des données en sortie de table ? une requête en gros ?