在交换机php里面使用strstr

Wil*_*nes 5 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...
Run Code Online (Sandbox Code Playgroud)

但是如何在交换机中实现相同的目标呢?

Kin*_*nch 10

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;
}
Run Code Online (Sandbox Code Playgroud)

请注意,这与您自己的解决方案略有不同,因为switch-statement不会针对其他cases进行测试,如果之前已经匹配,但是因为您使用单独的ifs,而是如果if-else您的方式始终针对每种情况进行测试.


Sla*_*hin 10

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

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