「PHPの未定義値と値の検査」というタイトルで社内勉強会を開催しました。PHPの型、未定義値、キャスト、==演算子などの知識の確認がテーマです。
まとめ
- ==の挙動はキモいです。できるだけ===を使いましょう。
- 未定義値にアクセスすると通常はNoticeが出ます。
- isset関数とempty関数はNoticeが出ません。未定義値の可能性がある場合はまずどちらかでチェックしましょう。
- isset関数はis_null関数と正反対の意味になります。
- if($a)としたとき、$aをbooleanにキャストした真偽値として評価されます。
- if(empty($a))が正反対の意味になります。
ムービー
発表資料
内容の補足など
実際のコードでは、未定義の変数を扱いたい状況はレアなはずです。一方で、$array["key"]が未定義かもしれない、というのはよくあることです。プレゼン資料では見やすさの都合で$aなどを検査していますが、頭の中で読みかえてください。
PHPの比較演算子とis_numeric関数の関係や、数値形式の文字列とは何か、といった話題は時間の都合で話せませんでした。このあたりは私が過去に「==で文字列同士を数値として比較する条件」という記事を書いていますので、興味のある方はご覧下さい。

コメント / トラックバックはありません
コメントする