在开关php中使用strstr
我就是想不起代码。我有太多的if语句,我想把它们改成switch语句,但我找不到逻辑 目前我有:在开关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(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,相反,ifif 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";
}
}