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 )