OVH Cloud OVH Cloud

Optimisation code

24 réponses
Avatar
Michel
Bonjour,

Voici ce code simple :
if($etat==1){$f="a"; $l="a";}
if($etat==2){$f="b"; $l="a";}
if($etat==3){$f="c"; $l="a";}
if($etat==4){$f="a"; $l="b";}
if($etat==5){$f="a"; $l="c";}

Cela me semble peut élégant, est-il possible de l'optimiser ?

Merci de votre aide à un débutant éclairé.

Michel

10 réponses

1 2 3
Avatar
Francis Spiesser
Michel a exposé le 01/12/2004 :
Bonjour,

Voici ce code simple :
if($etat==1){$f="a"; $l="a";}
if($etat==2){$f="b"; $l="a";}
if($etat==3){$f="c"; $l="a";}
if($etat==4){$f="a"; $l="b";}
if($etat==5){$f="a"; $l="c";}

Cela me semble peut élégant, est-il possible de l'optimiser ?

Merci de votre aide à un débutant éclairé.

Michel


switch est ton ami !

http://fr.php.net/manual/fr/control-structures.switch.php

--
______
Francis (enlever .NIPUBNISOUMIS)
"Dans toute statistique, l'inexactitude du nombre est compensée par la
précision des décimales." Alfred Sauvy

Avatar
Damien
Michel wrote:

Bonjour,

Voici ce code simple :
if($etat==1){$f="a"; $l="a";}
if($etat==2){$f="b"; $l="a";}
if($etat==3){$f="c"; $l="a";}
if($etat==4){$f="a"; $l="b";}
if($etat==5){$f="a"; $l="c";}

Cela me semble peut élégant, est-il possible de l'optimiser ?

Merci de votre aide à un débutant éclairé.

Michel


J'utiliserais un switch

http://fr2.php.net/manual/fr/control-structures.switch.php

Avatar
shak
"Michel" a écrit dans le message de news:
Bonjour,
Salut


Voici ce code simple :
if($etat==1){$f="a"; $l="a";}
if($etat==2){$f="b"; $l="a";}
if($etat==3){$f="c"; $l="a";}
if($etat==4){$f="a"; $l="b";}
if($etat==5){$f="a"; $l="c";}

Cela me semble peut élégant, est-il possible de l'optimiser ?
Oui avec un switch :


<?
switch($etat){
case 1: $f='a'; $1='a'; break;
case 2: $f='b'; $1='a'; break;
...
case 5: $f='a'; $1='c'; break;
default: break; //lorsque aucune des conditions précédente n'est vérifiée
}
?>

J'ai aussi changé le format des chaines de caractères : mes profs mon
toujours dit de ne pas utiliser les guillemets si il n'y a pas de variables
a interpréter à l'interieur... Maitenant tu fais comme tu veux :)

Shak.

Avatar
DJiK
Cela me semble peut élégant, est-il possible de l'optimiser ?



Oui, cherche la doc de switch. :-)

switch ($etat)
{
case 1:
$f="a"; $l="a";
break;
case 2:
...
// sans oublier toujours de finir par break;

default:
; // Rien si rien à faire.
}

--
DJiK

Avatar
jpll
"Michel" a écrit dans le message de
news: 41adecab$0$9784$
Bonjour,

Voici ce code simple :
if($etat==1){$f="a"; $l="a";}
if($etat==2){$f="b"; $l="a";}
if($etat==3){$f="c"; $l="a";}
if($etat==4){$f="a"; $l="b";}
if($etat==5){$f="a"; $l="c";}

Cela me semble peut élégant, est-il possible de l'optimiser ?

Merci de votre aide à un débutant éclairé.

Michel
pourquoi tu n'utilises pas un switch ?

switch($etat){
case '1' :
$f= 'a'; $l='a';
break;
case '2' :
$f='b'; $l='a';
break;
etc....
}

Avatar
Paul Delannoy
Michel a écrit:
Bonjour,

Voici ce code simple :
if($etat==1){$f="a"; $l="a";}
if($etat==2){$f="b"; $l="a";}
if($etat==3){$f="c"; $l="a";}
if($etat==4){$f="a"; $l="b";}
if($etat==5){$f="a"; $l="c";}

Cela me semble peut élégant, est-il possible de l'optimiser ?


Switch, of course ! mais peut être avecdes tableaux :
$ff=array('a','b','c','a','a');
$fl=array('a','a','a','b','c');
$f=$ff[$etat];
$l=$fl[$etat];


Merci de votre aide à un débutant éclairé.
de nada


Avatar
poji
Michel wrote:
Bonjour,

Voici ce code simple :
if($etat==1){$f="a"; $l="a";}
if($etat==2){$f="b"; $l="a";}
if($etat==3){$f="c"; $l="a";}
if($etat==4){$f="a"; $l="b";}
if($etat==5){$f="a"; $l="c";}

Cela me semble peut élégant, est-il possible de l'optimiser ?

Merci de votre aide à un débutant éclairé.

Michel


$etats=array(1=>'a|a',2=>'b|a',3=>'c|a',4=>'a|b',5=>'a|c');
list($f,$l)=explode('|',$etats[$etat]);

ça marche, mais de là à dire que c'est élégant :)

Plus sérieusement, tu es effectivement dans un cas typique où le switch
est ton ami.

++
PoJi

Avatar
Olivier Miakinen

Voici ce code simple :
if($etat==1){$f="a"; $l="a";}
[...]


Switch, of course ! mais peut être avec des tableaux :
$ff=array('a','b','c','a','a');
$fl=array('a','a','a','b','c');


Presque ! Je dirais :
$ff=array(1=>'a','b','c','a','a');
$fl=array(1=>'a','a','a','b','c');

$f=$ff[$etat];
$l=$fl[$etat];


Voui.


Avatar
Sebastien
Grand ennemi des switch( ) (imbittables en C/PHP/etc.) je ferais :

$data = array(
1 => array('f' => 'a', 'l' => 'a'),
2 => array('f' => 'b', 'l' => 'a'),
3 => array('f' => 'c', 'l' => 'a'),
4 => array('f' => 'a', 'l' => 'b'),
5 => array('f' => 'a', 'l' => 'c')) ;
extract($data[$etat]) ;
echo $etat, ' : $f => ', $f, ', $l => ', $l ;
Avatar
John Gallet
Bonjour,

Avis à tous les amateurs de switch : NON NON et NON ce n'est PAS
default:break; c'est default:exit("Valeur incoherente $etat"); ou alors
affectation d'une valeur par défaut (cohérente pour l'application) à $f
et $l (dans le default ou par initialisation de ces variables avant le
switch).

Ou même si on veut faire les choses proprement, c'est à dire en
renvoyant le MOINS POSSIBLE d'informations à un attaquant potentiel,
c'est logguer dans un coin (fichier par exemple) ce message d'erreur et
exit(require('excuses_standard.htlm'));

Ecrivez du code DETERMINISTE, nom d'un chat !

a++
JG
1 2 3