2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【PHP】【初心者】in_arrayを正しく使うために

Posted at

##軽い気持ちで使うと怖い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は罠が多いので注意喚起が必要

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?