0

「bob@example.com」が in_array 配列 (0,1,2,3,4) と見なされるのはなぜですか?

$email = 'bob@example.com';
$validValues = array(0,1,2,4);
var_dump(in_array($email, $validValues));       // bool(true)
var_dump(in_array($email, $validValues, true)); // bool(false)

それで、ここで何が起こっているのですか?

4

3 に答える 3

4

(文字列は数値に変換されるため0 == 'bob@example.com')、しかし0 !== 'bob@example.com'.

==and演算子は型強制を実行し、!=一方のオペランドを他方の型と一致するように変換します。オペランドの型が正確に同じ===はなく、オペランドの値が等しい場合、 and!==演算子は false を返します。

の 3 番目の引数in_array()は、使用する等価テストのタイプを決定します。

于 2013-04-30T17:02:56.290 に答える