在交换机php里面使用strstr

时间:2011-07-14 10:05:27

标签: php switch-statement strstr

我只是想不出代码。如果我想改变的语句是一个switch语句,我已经太多了,但我找不到逻辑。

目前我有:

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 个答案:

答案 0 :(得分:10)

我认为你不能用switch(比现在更优雅)来实现这一点,因为它比较了值,但你只想比较一部分值。相反,你可以使用循环:

$patterns = array('texttosearch', 'texttosearch1', 'texttosearch2');
foreach ($patterns as $pattern) {
    if (strstr($var, $pattern)) {
        echo "String contains '$pattern'\n";
    }
}

答案 1 :(得分:9)

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

请注意,这与您自己的解决方案略有不同,因为switch - 语句不会针对其他case进行测试,如果之前已经匹配,但是因为您使用单独的if 1}} s,相反,如果if-else你的方式总是针对每个案例进行测试。

答案 2 :(得分:2)

你可以反过来做到这一点:

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