ホームページ >バックエンド開発 >PHPチュートリアル >PHP の `in_array()` 関数と `array_search()` 関数はブール値と `$strict` パラメータを使ってどのように動作しますか?

PHP の `in_array()` 関数と `array_search()` 関数はブール値と `$strict` パラメータを使ってどのように動作しますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-22 18:54:10906ブラウズ

How Do PHP's `in_array()` and `array_search()` Functions Behave with Boolean Values and the `$strict` Parameter?

PHP の in_array() および array_search() の動作を理解する

PHP の in_array() および array_search() 関数は、次の場合に予期しない動作を示すことがあります。ブール値を含む配列を扱います。これらの不一致を解決するには、これらの関数の固有の機能を理解することが重要です。

どちらの関数にもオプションの 3 番目のパラメーター $strict があり、デフォルトは FALSE です。 $strict が FALSE に設定されている場合、これらの関数はゆるい比較 (==) を使用して値を評価します。これは、型に関係なく、値が等しいかどうかのみをチェックすることを意味します。

たとえば、提供された配列では、

$arr = [TRUE, "some string", "something else"];

in_array("test", $arr) を呼び出すと、配列に「test」が存在しない場合でも TRUE を返します。これは、TRUE が「test」を含む「空でない文字列」とほぼ等しいために発生します。

同様に、array_search("test", $arr) は 0 を返し、「test」が次の場所で見つかったことを示します。インデックス 0。これは、デフォルトでは TRUE と「空でない文字列」が等しいとみなされるためです。

正確な比較を保証するには、次のように設定する必要があります。 $strict を TRUE に設定すると、関数は厳密な比較 (===) を使用するようになります。厳密な比較では、変数の値と型の両方が評価されます。したがって、$strict が TRUE に設定されている場合:

in_array("test", $arr, true); // Returns false
array_search("test", $arr, true); // Returns -1

結論として、in_array() と array_search() のデフォルトの動作は、ブール値を処理するときに予期しない結果を引き起こす可能性があります。 $strict パラメーターを TRUE に設定すると、厳密な比較を強制でき、関数が変数の値と型の両方を評価して正確な結果が得られるようになります。

以上がPHP の `in_array()` 関数と `array_search()` 関数はブール値と `$strict` パラメータを使ってどのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。