我只是想不出代码。如果我想改变的语句是一个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...
但是如何才能在交换机中实现相同目标?
答案 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;
}