array_searchが存在する値を存在しないとか言い出した

久々にPHPさんにやられたのでちゃんと備忘録書きます。
まずは今回ハマったarray_search関数について。

array_searchとは
array_search(検索したいキーワード, 検索リスト)
という風に書くと最初に検索ワードが見つかった位置を返す関数です。
見つからなかったらfalseを返します。こんなかんじ。
問題が起こったのは、これを利用したif文。以下のようなコード。
ありません!!?いや0番目に存在してるでしょ勘弁してよ…
これはバグでしょ…と思ったけどこちらPHPの仕様です。
PHP先生は0をfalse扱いするの忘れてました。ヒィィィィ~
解決策は、以下のようにfalseか否か厳密に判定すること。
こんな具合です。
あとは毎回忘れるPHPさんの型に囚われないビックリ判定仕様を書いておきます。
(100 == "1e2")が本気でワケワカメだったけど、
eを指数表記と判定して「1*10の2乗、つまり100だからTRUE!」っていう考えらしい。
しかもこれがPHP公式に書いてある恐怖。

みんな、ちゃんとリファレンス読もうな!!
PHP: 比較演算子 - Manual