7
votes

En utilisant strtstr à l'intérieur d'un interrupteur PHP

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...


1 commentaires

En réalité, foreach solution par php-coder est préférable à utiliser commutateur . Cela réduira la ligne de codes.


3 Réponses :


2
votes

Vous pouvez le faire dans l'inverse:

switch(true) {
case strstr($var, "texttosearch"):
    // do stuff
    break;
case strstr($var, "texttosearch1"):
    // do other stuff
    break;
}


1 commentaires

@William Jones pouvez-vous éviter de tels mots en public, à la discussion technique.



11
votes
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.

0 commentaires

11
votes

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


2 commentaires

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.