Comment éviter la répétition de variable?

tryan

WRInaute passionné
Supposons :
Code:
if ($variable1 == AA){
echo 'aa';
}
if ($variable1 == SS){
echo 'ss ';
}
if ($variable1 == ZZ){
echo 'zz';
}
if ($variable1 == DD){
echo 'dd';
}
..répété X fois dans une page .

Y a t'il moyen de faire autrement pour éviter la répétition et donc alléger le code?
Si oui, comment ?
Merci
 

5_legs

WRInaute passionné
avec un tableau sans aucun doute.

au hasard : -http://www.vulgarisation-informatique.com/tableaux-php.php
 

tryan

WRInaute passionné
oki, merci .
Je pensais plutôt à une fonction mis à part dans un autre fichier:
Code:
<?php
$teste = "AA";

function Remplacetout($chaine)
{ 
    $grand = Array("/AA/", "/ZZ/", "/EE/");
    $petit = Array("aa", "zz", "ee");
    
    $chaine = preg_replace($grand, $petit, $chaine);  
    
    return $chaine;
}

echo Remplacetout($teste);
//retourne aa

?>
Sa vous semble correcte et plus rapide?
 

tryan

WRInaute passionné
Chiote, je n'en comprend pas le fonctionnement ^^.

Je ne capte pas comment ton code remplace "AA" en "aa" partant du principe que $teste = "AA"; :?:

Une petite explication please.
 

UsagiYojimbo

WRInaute accro
Je viens de VRAIMENT comprendre ce que tu cherches à faire (je crois). Ton idée est la bonne dans ce cas. preg_replace en utilisant des tableaux pour définir les éléments recherchés et les éléments par lesquels ils doivent être remplacés.
 

tryan

WRInaute passionné
En gros, je récupère mes données en bdd qui sont enregistrées sous la forme "Camping_car", "Mobil_home",etc...

Pour le moment je fais un truc du style:
Si ma variable = Camping_car alors j'affiche "Loue Camping car"
Si ma variable = Mobil_home alors j'affiche "Loue Mobil home"

Donc à la finale je me retrouve avec beaucoup de if() parfois répété plusieurs fois. Moi je veux écrire le code ou fonction faisant appel à cette série de if() une seule fois pour pouvoir ensuite appelé plus facilement et plus rapidement ce même code 8O (pas simple à expliqué ^^).

Ps: Je crois avoir comprit ton code:
Code:
<?php
$teste = "AA";

switch ($teste) {
    case AA:
        echo "teste égal aa";
        break;
    case ZZ:
        echo "teste égal zz";
        break;
    case EE:
        echo "teste égal ee";
        break;
}
?>
 

Marie-Aude

WRInaute accro
La solution pour ton système c'est

$affiche = array ("aa" => "affiche aa", "bb" => "affiche bb") ;

echo $affiche[lavariable]

Ou si tu en as beaucoup tu fais une petite requete dans ta base, genre select ID, affiche que tu stockes dans une variable tableau
 

5_legs

WRInaute passionné
tryan a dit:
En gros, je récupère mes données en bdd qui sont enregistrées sous la forme "Camping_car", "Mobil_home",etc...

Pour le moment je fais un truc du style:
Si ma variable = Camping_car alors j'affiche "Loue Camping car"
Si ma variable = Mobil_home alors j'affiche "Loue Mobil home"
....

Dans ce cas tu peux (aussi peut-être) ajouter un champ "variable_a_afficher" par exemple, voir une table style "variable","variable_a_afficher"

ça te permettrait d'en ajouter d'autres sans devoir revenir dans le code à chaque fois
 

dadovb

WRInaute passionné
tryan a dit:
En gros, je récupère mes données en bdd qui sont enregistrées sous la forme "Camping_car", "Mobil_home",etc...

Pour le moment je fais un truc du style:
Si ma variable = Camping_car alors j'affiche "Loue Camping car"
Si ma variable = Mobil_home alors j'affiche "Loue Mobil home"

Tu peux pas juste faire :
Code:
echo "Loue ".str_replace("_"," ",$variable);
:?:
 

moktoipas

WRInaute passionné
Code:
$bdd[]="Camping_car"; $html[]="Loue Camping car";
$bdd[]="Mobil_home"; $html[]="Loue Mobil home";

echo str_replace($bdd,$html,$variable);

?
 

tryan

WRInaute passionné
Arfff, du coup je ne sais plus quelle code adapter ^^.
Une fonction (debut de poste par moi), switch (proposé par OTP) ou array (proposé par Marie-Aude) .. :?:
 

zeb

WRInaute accro
moktoipas a dit:
Mais peu évolutif si il a d'autre variable qu'il doit nommer différemment.
Mouais ... le côté évolutif du code c'est pas trop le problème, un coup de FTP et c'est réglé en revanche des expressions régulières ou des dizaine de conditionnelles ça fait vite évoluer le serveur vers ses limites.

en fait l'énoncé est pas forcement très clair (pour moi) faudrait plus de détails.

ps : moktoipas ton filtre anti spam sur les commentaires de ton blog est il tjs aussi violent ?
 

moktoipas

WRInaute passionné
Non j'ai corrigé le filtre, j'avais fait une erreur et tout les message qui contenaient "tit" (meme dans "petit") étaient jetés par accident :p
 

tryan

WRInaute passionné
moktoipas a dit:
Et ma solution, elle pue? :D
.
Mheuuu non :D , je cherche juste la plus simple à mon gout ^^.

Pour :
Code:
echo "Loue ".str_replace("_"," ",$variable);
$variable commence par une majuscule et peut comporter un (_) ou pas.
Moi je la ressort tout en minuscule.

J'ai opté pour un array:
Code:
$teste = array (
"AA" => "blabla aa", 
"ZZ" => "blabla zz", 
"EE" => "blabla ee "
) ;
..mais je me retrouve confronté à un soucis .. on ne peut pas mettre de variable dans un array !?
Genre:
Code:
...
"AA" => "blabla '.Optimise($mavariable).'", 
...

zeb :
En gros pour mieux t'expliquer, sa fait un truc du genre:
Code:
<title><?php
if ($variable1 == AA){
echo 'aa';
}
if ($variable1 == SS){
echo 'ss ';
}
if ($variable1 == ZZ){
echo 'zz';
}
if ($variable1 == DD){
echo 'dd';
}
?></title>

<meta name="description" lang="fr" content=" blabla <?php
if ($variable1 == AA){
echo 'aa';
}
if ($variable1 == SS){
echo 'ss ';
}
if ($variable1 == ZZ){
echo 'zz';
}
if ($variable1 == DD){
echo 'dd';
}
?>" />
...
etc
La je répète 2 fois le même code ... et ce que j'aimerais éviter.
 

zeb

WRInaute accro
Code:
echo "Loue ".strtolower(str_replace("_"," ",$variable));
en résumé.

PS moktoipas -> passé le mauvais jours alors (ça date un peu)
 

tryan

WRInaute passionné
sauf que $variable peut également contenir (é,è,ê,',ô)etc.. et que la partie ( echo "Loue ".) varie en fonction du type de loc.
 

screuscreu

WRInaute impliqué
druart a dit:
il reste la solution de la table :)
Qui je pense est la meilleure solution, même d'un point de vue rapidité. Rajouter une colonne avec ce qu'il faut vraiment afficher me semble "simple" et facile à mettre en place
 

Discussions similaires

Haut