[PHP] isset、empty、is_null関数の挙動まとめ

phpで存在するか否かを調べる関数にisset, empty, is_nullがあります。
どれがどのように判定されるのか、迷うことが多いので一覧にしてみます。

isset empty is_null
$var FALSE TRUE TRUE
$var = “” TRUE TRUE FALSE
$var = “hoge” TRUE FALSE FALSE
$var = 0 TRUE TRUE FALSE
$var = 1 TRUE FALSE FALSE
$var = 0.0 TRUE TRUE FALSE
$var = 0.1 TRUE FALSE FALSE
$var = “0” TRUE TRUE FALSE
$var = “1” TRUE FALSE FALSE
$var = “0.0” TRUE FALSE FALSE
$var = “0.1” TRUE FALSE FALSE
$var = TRUE TRUE FALSE FALSE
$var = FALSE TRUE TRUE FALSE
$var = NULL FALSE TRUE TRUE
$var = array() TRUE TRUE FALSE
$var = array(1,2) TRUE FALSE FALSE

で、論理演算子の否定「!」を付与すると当然ながら正反対の結果となります。

!isset !empty !is_null
$var TRUE FALSE FALSE
$var = “” FALSE FALSE TRUE
$var = “hoge” FALSE TRUE TRUE
$var = 0 FALSE FALSE TRUE
$var = 1 FALSE TRUE TRUE
$var = 0.0 FALSE FALSE TRUE
$var = 0.1 FALSE TRUE TRUE
$var = “0” FALSE FALSE TRUE
$var = “1” FALSE TRUE TRUE
$var = “0.0” FALSE TRUE TRUE
$var = “0.1” FALSE TRUE TRUE
$var = TRUE FALSE TRUE TRUE
$var = FALSE FALSE FALSE TRUE
$var = NULL TRUE FALSE FALSE
$var = array() FALSE FALSE TRUE
$var = array(1,2) FALSE TRUE TRUE

なかなかややこしいですね!

関連記事