0

strpos() を使用して複数の比較を置き換えても問題ありませんか?
例:
変更

if ( $linecounter == $extra1 || $linecounter == $extra2 || $linecounter == 5 )
{ 
  ...
}

$ok = ' ' . $extra1 . $extra2 . '5';
if ( strpos($ok, $linecounter) > 0 )
{
  ...
}
4

1 に答える 1

2

いいえ、それは目的ではないので、問題ありませんstrpos。一般的なケースでは、問題のある例を簡単に見つけることができます (たとえば$linecounter == 15、チェックが成功するはずがないのに成功するなど) $extra2 == 1strpos

個別の条件を大幅に失いたい場合、実行可能な代替手段は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 )
于 2013-08-06T21:42:54.070 に答える