さらに、2 つの値が一致するかどうかを比較する構造を制御するときは、== の代わりに === を使用するようにしてください (もちろん、これも特定のビジネス ロジックに応じてより適切です)。
なぜ
var_dump(in_array(0, array('s' )));
この文の結果は bool(true) になるのか説明しましょう。
in_array は 0 と 's' を比較するため、0 は数値型であり、's' は文字列型です。PHP マニュアルの「比較演算子」の章の指示に従って、数値と文字列が比較されます。 🎜> このとき、まず文字列型を数値に変換してから比較演算を行いますが、's'を数値に変換した結果は0となり、0 == 0の結果はtrueとなるため、in_arrayとなります。 (0, array('s', 'ss')) も true
in_array の第 3 パラメータ strict を true に設定すると、実行時に値と型が等しいかどうかが判定されます。比較し、等しい場合のみ true が返され、それ以外の場合は false が返されます。これはメモのためです。