Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在开关php中使用strstr_Php_Switch Statement_Strstr - Fatal编程技术网

在开关php中使用strstr

在开关php中使用strstr,php,switch-statement,strstr,Php,Switch Statement,Strstr,我就是想不起代码。我有太多的if语句,我想把它们改成switch语句,但我找不到逻辑 目前我有: if(strstr($var,'texttosearch')) echo 'string contains texttosearch'; if(strstr($var,'texttosearch1')) echo 'string contains texttosearch1'; if(strstr($var,'texttosearch2')) echo 'string cont

我就是想不起代码。我有太多的if语句,我想把它们改成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...

但是如何在交换机中实现同样的功能呢?

您可以通过另一种方式实现:

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

请注意,这与您自己的解决方案略有不同,因为如果较早的一个已匹配,则
switch
-语句不会针对另一个
案例进行测试,而是因为您使用单独的
if
s,相反,if
if else
您的方法总是针对每种情况进行测试。

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

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

@威廉·琼斯:你能不能避免在公共场合说这样的话,那是为了技术讨论。绝对+1。肯定如果可以的话,我会给你+2。这个例子的更好答案是+1,但是@KingCrunch snippet对于实现一个特定的动作来说很有趣。实际上
foreach
php coder
提供的解决方案最好使用
开关。它将减少代码行。
$patterns = array('texttosearch', 'texttosearch1', 'texttosearch2');
foreach ($patterns as $pattern) {
    if (strstr($var, $pattern)) {
        echo "String contains '$pattern'\n";
    }
}