Alternative plus rapide à un switch php

WRInaute impliqué
Bonsoir,

Dans mon fonction, je possède un switch relativement long. J'aimerais savoir si il n'existe pas une alternative qui serait plus rapide à l'exécution que le switch ou que la fonction tout simplement.

Merci

Code:
function special($special) {// Fonction francise special.

	switch ($special) {
	case 'strength': $special0 ='force'; break;
	case 'dexterity': $special0 ='dextérité'; break;
	case 'attackpower': $special0 ='pouvoir d\'attaque'; break;
	case 'defensepower': $special0 ='pouvoir de défense'; break;
	case 'goldbonus': $special0 ='bonus rubis'; break;
	case 'spellbonus': $special0 ='bonus sorts'; break;
	case 'expbonus': $special0 ='expérience bonus'; break;
	case 'currenthp': $special0 ='HP'; break;
	case 'currentmp': $special0 ='MP'; break;
	case 'currenttp': $special0 ='TP'; break;
	case 'maxhp': $special0 ='HP Max'; break;
	case 'maxmp': $special0 ='MP Max'; break;
	case 'maxtp': $special0 ='TP Max'; break;
		default : $special0 ='points HP, MP et TP';

	}

	return $special;
}
 
WRInaute discret
Bonjour

Julia41 propose un truc beaucoup plus rapide qu'un switch, un array.

Un truc genre :

Code:
<?php
// tu place ton array de "conf" quelquepart
$mes_Conditions = array(
   'strength'       => 'force',
   'dexterity'      => 'dextérité',
   'attackpower'    => 'pouvoir d\'attaque',
   'defensepower'   => 'pouvoir de défense',
   'goldbonus'      => 'bonus rubis',
   'spellbonus'     => 'bonus sorts',
   'expbonus'       => 'expérience bonus',
   'currenthp'      => 'HP',
   'currentmp'      => 'MP',
   'currenttp'      => 'TP',
   'maxhp'          => 'HP Max',
   'maxmp'          => 'MP Max',
   'maxtp'          => 'TP Max'
);

// fonction special qui test si la clef existe
function special($mes_Conditions, $special='') {
    
    // la valeur par défaut si la clef n'existe pas
    $special0 = 'points HP, MP et TP';
    
    if(isset($mes_Conditions[$special]))
        $special0 = $mes_Conditions[$special];
    
    return $special0;
}
?>
 
WRInaute passionné
Voilà, désolé j'étais à l'apéro alors je voulais pas dire de merdes hier soir.
Mais bon, l'array devrait quand même être moins performant au final, ça se benchmark quand même pour voir, mais la déclaration en array peut être pas mal aussi, tout dépends de l'utilisation.
 
WRInaute discret
Bonjour Julia,

Je ne suis pas en effet 100% certains que l'array soit beaucoup plus rapide... mais, je voie beaucoup plus que juste la rapidité de la déclaration : en utilisant un array, on rend cette fonction indépendante, plus besoin d'y revenir pour ajouter des actions / conditions. C'est tout de même pas négligeable :)

Sky
 
Discussions similaires
Haut