現在の位置: ホーム> 最新記事一覧> Striposは0のFalseを返していますか?なぜ間違った判断があるのですか?

Striposは0のFalseを返していますか?なぜ間違った判断があるのですか?

M66 2025-05-13

PHPでは、 StripOS関数を使用して、別の文字列(ケースの鈍感)の文字列の位置を見つけます。この関数は、見つかった場所インデックスを返しますただし、 Scripos関数が0を返すと、多くの開発者は誤ってそれが誤っていると考えています。なぜなら、PHPでは、番号0とブール値のFalseが同等であるためです。それで、ストリップの関数は0のfalseを返しますか?なぜ間違った判断があるのですか?この返品値をどのように理解する必要がありますか?次に、これらの質問に1つずつ答えます。

1。ストリップ機能の基本的な使用

StripoSの関数プロトタイプは次のとおりです。

 stripos(string $haystack, string $needle, int $offset = 0): int|false
  • $ haystack :検索する文字列。

  • $針:見つける弦。

  • $ offset :この場所から検索を開始します(オプション)。

この関数の関数は、$針が最初に$ haystackに表示される位置(0から始まる)を返すことです。文字列が見つからない場合、 falseが返されます。

例:

 $haystack = "Hello World";
$needle = "world";

$position = stripos($haystack, $needle);

echo $position;

出力は次のとおりです。

 6

これは、文字列「Hello World」では、 「World」 (ケースの無感覚)が表示される最初の場所がインデックス位置6であるためです。

2。0返すときにStriposが誤解を引き起こすのはなぜですか?

多くの開発者は、 StripOS関数の返品値を判断するときに、 Falseと直接比較する場合があります。次のコードがあるとします。

 $haystack = "test string";
$needle = "test";

if (stripos($haystack, $needle) === false) {
    echo "見つかりません";
} else {
    echo "見つかった";
}

この場合、 「テスト」が「テスト文字列」の位置0から「テスト」が表示されるため、 Striposは0を返します。したがって、一致する文字列を見つけたにもかかわらず、プログラムはPHPで0falseと見なされるため、まだ「見つかりません」です。

3.ストリップの返品値を正しく判断する方法は?

StripoSの返品値を正しく判断するには、 Falseと直接比較することを避ける必要があります。正しいアプローチは、厳密な比較演算子===を使用して、 falseが返されるかどうかを判断し、 0が有効なマッチング位置であると考えることです。これが修正されたコードの例です。

 $haystack = "test string";
$needle = "test";

$position = stripos($haystack, $needle);

if ($position === false) {
    echo "見つかりません";
} else {
    echo "見つかった,場所はです:".$position;
}

この場合、プログラムは正しく出力されます。

 見つかった,場所はです:0

このようにして、厳密な比較演算子===を通じて、 false (発見されないことを示す)と0 (一致する位置が0であることを示す)を区別できます。

4.判断で間違いを犯さないようにする方法は?

Striposの返品値を判断するときは、次のポイントに注意してください。

  • 使用しないでください==比較:PHPでは、 0falseが同等であるため、 ==を使用すると誤った判断につながります。

  • Strict Compariationを使用=== :これは、 False (見つからない)と0を区別できます(文字列に最初に一致していることを示します)。

さらに、プログラムの堅牢性を確保するために、実際の開発でStripOSによって返された値の合理的なデフォルト値を設定するか、エラー処理を実行することをお勧めします。例えば:

 $position = stripos($haystack, $needle);

if ($position === false) {
    // 際のない状況を処理します
} else {
    // 見つかった状況を処理します
}

5。概要

PHPでは、 Stripos関数が0を返すと、一致する文字列が見つからないことを意味するのではなく、一致する文字列が位置0で始まることを意味します。 0を誤っていると誤って考慮しないようにするために、厳密な比較演算子===を使用して、戻り値がfalseかどうかを判断する必要があります。

StripOSの返品値を理解し、適切な比較方法を取ることにより、判断エラーを効果的に回避し、より堅牢なPHPコードを記述できます。