PHPでは、 StripOS関数を使用して、別の文字列(ケースの鈍感)の文字列の位置を見つけます。この関数は、見つかった場所インデックスを返します。ただし、 Scripos関数が0を返すと、多くの開発者は誤ってそれが誤っていると考えています。なぜなら、PHPでは、番号0とブール値のFalseが同等であるためです。それで、ストリップの関数は0のfalseを返しますか?なぜ間違った判断があるのですか?この返品値をどのように理解する必要がありますか?次に、これらの質問に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であるためです。
多くの開発者は、 StripOS関数の返品値を判断するときに、 Falseと直接比較する場合があります。次のコードがあるとします。
$haystack = "test string";
$needle = "test";
if (stripos($haystack, $needle) === false) {
echo "見つかりません";
} else {
echo "見つかった";
}
この場合、 「テスト」が「テスト文字列」の位置0から「テスト」が表示されるため、 Striposは0を返します。したがって、一致する文字列を見つけたにもかかわらず、プログラムはPHPで0がfalseと見なされるため、まだ「見つかりません」です。
StripoSの返品値を正しく判断するには、 Falseと直接比較することを避ける必要があります。正しいアプローチは、厳密な比較演算子===を使用して、 falseが返されるかどうかを判断し、 0が有効なマッチング位置であると考えることです。これが修正されたコードの例です。
$haystack = "test string";
$needle = "test";
$position = stripos($haystack, $needle);
if ($position === false) {
echo "見つかりません";
} else {
echo "見つかった,場所はです:".$position;
}
この場合、プログラムは正しく出力されます。
見つかった,場所はです:0
このようにして、厳密な比較演算子===を通じて、 false (発見されないことを示す)と0 (一致する位置が0であることを示す)を区別できます。
Striposの返品値を判断するときは、次のポイントに注意してください。
使用しないでください==比較:PHPでは、 0とfalseが同等であるため、 ==を使用すると誤った判断につながります。
Strict Compariationを使用=== :これは、 False (見つからない)と0を区別できます(文字列に最初に一致していることを示します)。
さらに、プログラムの堅牢性を確保するために、実際の開発でStripOSによって返された値の合理的なデフォルト値を設定するか、エラー処理を実行することをお勧めします。例えば:
$position = stripos($haystack, $needle);
if ($position === false) {
// 際のない状況を処理します
} else {
// 見つかった状況を処理します
}
PHPでは、 Stripos関数が0を返すと、一致する文字列が見つからないことを意味するのではなく、一致する文字列が位置0で始まることを意味します。 0を誤っていると誤って考慮しないようにするために、厳密な比較演算子===を使用して、戻り値がfalseかどうかを判断する必要があります。
StripOSの返品値を理解し、適切な比較方法を取ることにより、判断エラーを効果的に回避し、より堅牢なPHPコードを記述できます。