たとえば、こんな以下のような配列を作って、in_arrayを使います。
例のような配列なら、文字列iをin_arrayにかけても、falseになるはずですね。
配列にはiなんて文字列は入っていないのですから。
<?php $array = array('hoge', 'homu', 0, '777'); print_r($array); var_dump(in_array('i', $array));
でも結果は
Array
(
[0] => hoge
[1] => homu
[2] => 0
[3] => 777
)
bool(true)
なぜかtrueが返ってる。
よく分からないね。
でもin_arrayの型比較のオプションtrueをつけると…
<?php $array = array('hoge', 'homu', 0, '777'); print_r($array); // in_arrayには型比較をするかどうかのオプションがあります。 var_dump(in_array('i', $array, true));
期待通りの結果が出ました。
Array
(
[0] => hoge
[1] => homu
[2] => 0
[3] => 777
)
bool(false)
一応マニュアルにも同じような質問があったので、
それを参考にしました。