Allied ArchitectsAllied ArchitectsEngineer Blog

空文字とかNULLとか0とか

2012/10/19 PHP

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

この前ちょっとした不具合があり、なるほどねぇ~と思ったのでご共有。
数が多い分岐などに便利な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を使うときは、入ってくる変数によって注意が必要そうですね。
ちょっとスッキリ!それではまた~。

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

RELATION ENTRY

SQLで複数行をまとめて取りたいとき( GROUP_CONCAT )

SQLで複数行をまとめて取りたいとき( ...

2014/06/17 MySQL

ワールドカップはじまりましたね! 普段はサッカーを観戦したりはしないのですが、お祭り的な雰囲気が好きで見てしまいます。 おひさしぶりです。塚原です。 健忘禄も兼ねて mysqlの GROUP_CONCAT を紹介します。 同一のカテゴリーのデータが複数行にあるものを1カテゴリー1行で出し...

続きを読む

PHPからParseでPush通知

PHPからParseでPush通知

2014/02/5 その他

年が明けたと思ったら、もう1月も終わり。。。 今年もあっという間なのだろうなと思いつつお問い合わせ対応に追われる毎日でございます。 おひさしぶりです。塚原です。 先ほど追われているとは書きましたが、お問い合わせばかりではく合間に開発もガッツリおこなってます。この前、スマホにPush通知...

続きを読む

塚原 大祐の記事一覧へ

ページTOPへ