Lentreprenaute Posté 2 Mai 2008 Posté 2 Mai 2008 Bonjour, J'analyse une variable VARX qui recoit un chaine de caractere et je voudrais déclarer une nouvelle variable si le mot clé est trouvée dans la chaine. Mon probleme est que je ne sais pas comment ecrire EFFICACEMENT cela. J'ai plusieurs mots clés qui doivent chacun retourner une variable = valeur différente. - si toto est trouvé dans la chaine VARX new var= XXXX - si titi est trouvé dans la chaine VARX new var= YYYY etc j'ai une quinzaine de cas a gerer. Merci Florent
marcb Posté 2 Mai 2008 Posté 2 Mai 2008 (modifié) Bonjour, Je suppose que tu codes en php... if (strstr($VARX, 'toto')) { $newvar = 'XXXX';} else if (strstr($VARX, 'titi')) { $newvar = 'YYYY';} else { $newvar = '';} Je ne vois pas trop comment faire plus efficace... M Modifié 2 Mai 2008 par marcb
captain_torche Posté 2 Mai 2008 Posté 2 Mai 2008 Je traiterais ça avec un array <?php$tab_search = array( 'toto' => 'XXX', 'titit' => 'YYY', 'tata' => 'ZZZ');$new_var = 'default';foreach($tab_search as $key => $value) { if(strpos($VARX, $key) !== false) $new_var = $value;}?>
Lentreprenaute Posté 2 Mai 2008 Auteur Posté 2 Mai 2008 (modifié) merci pour vos reponses ! Super capitain torche, c'est parfait comme ca. Florent Modifié 2 Mai 2008 par Lentreprenaute
marcb Posté 2 Mai 2008 Posté 2 Mai 2008 Bonsoir, C'est vrai, le code captain a l'avantage de regrouper les éléments 'toto' et 'XXXXX' sur la même ligne. C'est assez lisible. Par contre, pour être efficace, il faudrait peut-être ajouter un break : <?php$tab_search = array( 'toto' => 'XXX', 'titit' => 'YYY', 'tata' => 'ZZZ');$new_var = 'default';foreach($tab_search as $key => $value) { if(strpos($VARX, $key) !== false) { $new_var = $value; break; // <----ici }}?> Sinon tu fais un peu trop de comparaisons... M
Lentreprenaute Posté 2 Mai 2008 Auteur Posté 2 Mai 2008 Que veux tu dire apr trop de comapraisons? Florent
captain_torche Posté 2 Mai 2008 Posté 2 Mai 2008 Dans ma méthode, même si une correspondance est trouvee, on continue tout de même de parcourir l'array. Avec ce que Marcb ajoute, des qu'une correspondance est trouvée, on sort de la boucle, ce qui permet de gagner en temps de traitement.
Lentreprenaute Posté 21 Mai 2008 Auteur Posté 21 Mai 2008 Mieux vaut tard que jamais : merci pour l'explication et le code Florent
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant