Je ne peux tout simplement pas penser au code. J'ai trop beaucoup si des stations que je veux changer pour être un énoncé de commutation, mais je ne trouve pas de la logique.
Pour le moment, j'ai: P>
if(strstr($var,'texttosearch')) echo 'string contains texttosearch'; if(strstr($var,'texttosearch1')) echo 'string contains texttosearch1'; if(strstr($var,'texttosearch2')) echo 'string contains texttosearc2h'; //etc etc...
3 Réponses :
Vous pouvez le faire dans l'inverse:
switch(true) { case strstr($var, "texttosearch"): // do stuff break; case strstr($var, "texttosearch1"): // do other stuff break; }
@William Jones pouvez-vous éviter de tels mots en public, à la discussion technique.
switch (true) { case strstr($var,'texttosearch'): echo 'string contains texttosearch'; break; case strstr($var,'texttosearch1'): echo 'string contains texttosearch1'; break; case strstr($var,'texttosearch2'): echo 'string contains texttosearc2h'; break; } Note, that this is slightly different to your own solution, because the switch-statement will not test against the other cases, if an earlier already matches, but because you use separate ifs, instead if if-else your way always tests against every case.
Je pense que vous ne pouvez pas y parvenir avec commutateur code> (plus élégant que maintenant), car il compare les valeurs mais que vous souhaitez comparer uniquement une partie des valeurs. Au lieu de cela, vous pouvez utiliser une boucle:
$patterns = array('texttosearch', 'texttosearch1', 'texttosearch2');
foreach ($patterns as $pattern) {
if (strstr($var, $pattern)) {
echo "String contains '$pattern'\n";
}
}
Définitivement +1. Définitivement. Je vous donnerais +2 si je pouvais.
Meilleure réponse à cette affaire +1, mais @kingCrunch Snippet est intéressant pour réaliser une action spécifique.
En réalité,
foreach code> solution par
php-coder code> est préférable à utiliser
commutateur code>. Cela réduira la ligne de codes.