8797 sujets

Développement web côté serveur, CMS

Bonjours, J'ai un petit soucis de php. En fait j'essaye de rassembler les 2 parties du code ci-dessous. Les 2 parties sont identique. Dans la première partie il sert à $item['attribute1'] et dans la 2ème pour $item['attribute2']. Pensez vous qu'il est possible de combiner les 2 parties?

Merci

<? php //partie 1
if($item['attribute1'] != 'Aucun'){
            $special = explode(",",$item["attribute1"]);   

            $special[1] =($special[1]>=0)? '+'.$special[1] : $special[1];
            $perc =(($special[0] == 'goldbonus') OR ($special[0] == 'expbonus'))? '%' : null;

            switch ($special[0]) {
            case 'strength': $special[0] ='force'; break;
            case 'dexterity': $special[0] ='dextérité'; break;
            case 'attackpower': $special[0] ='pourvoir d\'attaque'; break;
            case 'defensepower': $special[0] ='pourvoir de défense'; break;
            case 'goldbonus': $special[0] ='bonus rubis'; break;
            case 'expbonus': $special[0] ='experience bonus'; break;
            }
            
            $spe_item = $special[1].''.$perc.' '.$special[0];
         }else{
            $spe_item = $item['attribute1'];
         }
         
//partie2
            if($item['attribute2'] != 'Aucun'){
   
            $special = explode(",",$item["attribute2"]);   

            $special[1] =($special[1]>=0)? '+'.$special[1] : $special[1];
            $perc =(($special[0] == 'goldbonus') OR ($special[0] == 'expbonus'))? '%' : null;

            switch ($special[0]) {
            case 'strength': $special[0] ='force'; break;
            case 'dexterity': $special[0] ='dextérité'; break;
            case 'attackpower': $special[0] ='pourvoir d\'attaque'; break;
            case 'defensepower': $special[0] ='pourvoir de défense'; break;
            case 'goldbonus': $special[0] ='bonus rubis'; break;
            case 'expbonus': $special[0] ='experience bonus'; break;
            }
            
            $spe_item2 = $special[1].''.$perc.' '.$special[0];
         }else{
            $spe_item2 = $item['attribute2'];
         } ?>
salut,

si tu fais deux fois exactement le même traitement avec juste un nom d'item qui varie c'est dommage.

le mieux est de faire une fonction dans ce cas et de l'appeller 2 fois ensuite avec un argument différent.

pascal
Modifié par CPascal (17 Mar 2008 - 22:34)
Une fonction c'est bien quand on l'utilise plusieur fois dans un script, la je vais faire une fonction pour l'utiliser uniquement 2 fois. Il y a vraiment pas possibilité de la combiner, sans fonction?
tu fais une boucle et tu passes "attribute1" en variable...

for($i=1;$i<3;$i++){
$varattribute = 'attribute'.$i;
if($item[$varattribute] != 'Aucun'){
...
}
}


ca ne te va pas ? (mais perso, j'aurais fait une fonction aussi... même pour "que" 2x...
si probablement. il suffit d'essayer de rajouter des actions, des controles, etc... analyse toi même ton code pour cela.

vraisemblablement tu n'economiseras pas plus de ligne, tu vas complexifier les choses. et tu feras plus d'efforts c'est tout.<edit>: sauf si quelqu'un le fait pour toi. mais on te rends pas service.</edit>

si j'en crois mon expérience personnelle, car moi aussi je me suis fait cette reflexion: je ne vais pas faire une fonction pour 2 usages. ben crois-moi on s'en mord les doigts quand soudain les besoins de plus de 2 usages se font sentir.
Modifié par CPascal (17 Mar 2008 - 23:09)