Aller au contenu

recherche multiple dans une chaine de caracteres et tableau


Sujets conseillés

Posté

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

Posté (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é par marcb
Posté

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;
}
?>

Posté

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

Posté

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.

  • 3 semaines plus tard...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...