##軽い気持ちで使うと怖いin_array
PHPのin_arrayという関数はご存知でしょうか。
値と配列を比較して、配列の中に値が入っていればtrue、入っていなければfalseを返す関数です。
軽い気持ちで使って渋い思いをしたので、自分への戒めも含めた投稿です。
##かんたんにまとめると
in_arrayの第3引数に
- true を入れると演算子===での比較
- false もしくは なにも入れないと演算子==での比較
##試してみると
それぞれの演算子の比較がどう違うのかはここを確認しましょう。
そちらのページの「==による穏やかな比較」という項目にて
"PHP" == 0
これがtrueとなることが確認できます。とっても穏やかな比較ですね。つまり、
$array = ["PHP", "Hoge", "PHogeP"];
in_array(0, $array);
こうするとtrueになりました。
だから、
$array = ["PHP", "Hoge", "PHogeP"];
in_array(0, $array, true);
こうすることによって、求めているであろうfalseが返ってきます。
悲しい事故を起こさないためにも、「第3引数にtrue」は絶対に入れましょう。
参考記事(むしろこれを読むべき):
PHPのin_arrayは罠が多いので注意喚起が必要