PHP in_array() と array_search() の特殊な動作: オプションのパラメーターの詳細を調べる
PHP の in_array() を使用すると、次のような問題が発生する可能性があります。存在しない要素を検索するときに予期しない動作が発生する。この記事では、この奇妙さを調査し、不明瞭な $strict パラメータを導入することで解決策を検討します。
$arr = [TRUE, "some string", "something else"] のような配列を考えてみましょう。 in_array() を使用して「test」を検索すると、驚くべきことに TRUE が返されます。同様に、array_search() は「不正確な」インデックス 0 を取得します。この動作は最初は不可解に見え、TRUE が普遍化された肯定的な結果を自動的にトリガーすると仮定します。
ただし、これはバグではなく、意図的な機能です。 。 in_array() と array_search() の両方に、比較モードを決定する、見落とされがちな 3 番目のパラメーター $strict があります。デフォルト値の FALSE では、型の不一致を無視して、緩やかな (==) 比較が可能です。
その結果、$arr の場合、TRUE == "空でない文字列" は TRUE と評価されます。 $strict を TRUE に設定すると、厳密 (===) 比較を使用して、値と型の両方の同一性を検証するように PHP に指示します。
この知識により、複雑な動作が明確になります。厳密な比較を採用することで、誤解を避け、正確な検索結果を保証できます。 PHP における等価性と同一性の比較についてさらに詳しく知りたい場合は、提供されているリファレンスを参照してください。
以上がPHP の `in_array()` および `array_search()` が予期しない結果を返す場合があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。