LoginSignup
4
4

More than 5 years have passed since last update.

PHP if($var),empty($var),isset($var),is_null($var)

Last updated at Posted at 2017-11-01

初学者(自分)がよくハマるアレ。

まずは早見表で確認!

PHP 型の比較表
PHP isset, empty, is_null の違い早見表

動作の整理

上記を整理すると、

  1. if($var)!empty($var)
  2. isset($var)!is_null($var)

等価となっていることがわかりました。
【追記↓】
isset()とempty()は未定義の変数でエラーを吐かないので、正確には対にはなっていません。
※コメント参照
isset, empty, is_null の動作まとめ
【↑ここまで】

そして、if($var)isset($var) で違いが出るのが、

$var isset($var) if($var)
"" 空文字 TRUE FALSE
array() 空の配列 TRUE FALSE
false 真偽値の偽 TRUE FALSE
0 数値のゼロ TRUE FALSE
"0" 文字列のゼロ TRUE FALSE

でした。

緩やかな比較で0は・・・

上述したPHPマニュアルの比較表を見ていると、
==による緩やかな比較は腑に落ちない動きをしますね。
 if(0=="") ⇒ TRUE
 if("0"=="") ⇒ FALSE
これはまだしも、
 if(0=="hoge") ⇒ TRUE
とは・・・??

特に理由がないならば===を使うべき、と・・・。
ただ、switchは緩やかな比較と聞いたことが・・・

0を判定するなら

0 または "0" については、is_numeric($val)なんですかね。

$val is_numeric($val)
0 TRUE
"0" TRUE
"" FALSE
4
4
5

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
4
4