使用strpos()替换多重比较可以吗?
例子:
改变
if ( $linecounter == $extra1 || $linecounter == $extra2 || $linecounter == 5 )
{
...
}
至
$ok = ' ' . $extra1 . $extra2 . '5';
if ( strpos($ok, $linecounter) > 0 )
{
...
}
使用strpos()替换多重比较可以吗?
例子:
改变
if ( $linecounter == $extra1 || $linecounter == $extra2 || $linecounter == 5 )
{
...
}
至
$ok = ' ' . $extra1 . $extra2 . '5';
if ( strpos($ok, $linecounter) > 0 )
{
...
}
不,这不行,因为那不是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 )