塚原 大祐

2012.10.19

空文字とかNULLとか0とか

お久しぶりです。塚原です。
暑かった夏も終ってやっと秋らしくなり過ごしやすくなってきました。
最近やたら眠いですが、モリモリ開発しております。

この前ちょっとした不具合があり、なるほどねぇ~と思ったのでご共有。
数が多い分岐などに便利なswith文ですが、意外に落とし穴があるみたいです。

検索で絞り込みしたいときに書いた次のコード

初期表示でパラメータがないためスルーして全件でると思いきや、、、
未使用がでる!?
調べてみると空は0と一致する扱いなのですな。。。

結局if文とisset()で書いて解決しましたが、
結構、空、NULL、0の扱いがどうなってるのというときありますよね。

よく思い出せずに混乱するので実験して備忘録。
以下のコードで

変数aを未定義、空文字、NULL、0をいれて実行してみました。
結果がこちら

未定義 NULL 0
if( $a ) FALSE FALSE FALSE FALSE
if( $a == “” ) TRUE TRUE TRUE TRUE
if( $a == NULL) TRUE TRUE TRUE TRUE
if( $a == 0 ) TRUE TRUE TRUE TRUE
if( $a === “” ) FALSE FALSE TRUE FALSE
if( $a === NULL ) TRUE TRUE FALSE FALSE
if( $a === 0 ) FALSE FALSE FALSE TRUE
isset( $a ) FALSE FALSE TRUE TRUE
empty( $a ) TRUE TRUE TRUE TRUE
is_null( $a ) TRUE TRUE FALSE FALSE
switch case ” TRUE TRUE TRUE TRUE
switch case NULL TRUE TRUE TRUE TRUE
switch case 0 TRUE/ TRUE TRUE TRUE

==の比較演算子、empty、switchにおいてはどれもいっしょの扱いなのか!
switch文のcaseに0を使うときは、入ってくる変数によって注意が必要そうですね。
ちょっとスッキリ!それではまた~。

塚原 大祐

名の由来は「天祐」。 そのままではおこがましいので 天の字から1本棒をとればと叔父がつけてくれたもの。 名に恥じぬよう世の中の助けとなるものを創り出していきたいです。 for Facebookのサポート・運用開発の部隊に所属しています。

RELATION ENTRY

塚原 大祐の記事一覧へ

▶︎