使用strpos()替换多个比较是否可以?
例如:
改变
if ( $linecounter == $extra1 || $linecounter == $extra2 || $linecounter == 5 )
{
...
}
到
$ok = ' ' . $extra1 . $extra2 . '5';
if ( strpos($ok, $linecounter) > 0 )
{
...
}
答案 0 :(得分:2)
不,这不好,因为那不是strpos
的用途。在一般情况下很容易找到有问题的示例(例如$linecounter == 15
和$extra2 == 1
- strpos
检查会在不应该检查时成功。
如果你想要失去那么多单独的条件,那么可行的替代方案可能是switch
陈述或in_array
:
switch($linecounter) {
case $extra1: case $extra2: case 5:
// whatever
break;
}
if (in_array($linecounter, [$extra1, $extra2, 5])) {
// whatever
}
顺便说一句,使用strpos
测试大于零的测试并不是好事。你想说的是“如果它在字符串中找到”,那么写下来并丢失“前缀空格”黑客:
if ( strpos($extra1 . $extra2 . '5', $linecounter) !== false )