【PHP】 isset, empty, is_null の違いのまとめ

  • 投稿 : 2018-09-29

早見表

調べてたら、表にまとめてるのがわかりやすかったので、表を引用?しました。あと、自身が必要なものも追記しました。

if($var) isset empty is_null
$var=1 true true false false
$var=""; false true true false
$var="0"; false true true false
$var=0; false true true false
$var=NULL; false false true true
$var false false true true
$var=array() false true true false
$var=array(1) true true false false

引用:
PHPのisset,empty,is_null - モトクロスとプログラムと粉砕骨折と
PHP isset, empty, is_null の違い早見表

・isset 、 empty は関数ではなく言語構造 =>速い
・is_nullは関数

strlenとかも付け足したい気分だけど・・。

個人的には正しく使えてるかは自身はない。速度とかを意識するのなら、言語構造のものを使ったほうが処理速度は速い。

if($var)

PHP: if - Manual

boolean に変換する場合、次の値は FALSE とみなされます。
・boolean の FALSE
・integer の 0 (ゼロ)
・float の 0.0 (ゼロ)
・空の文字列、 および文字列の "0"
・要素の数がゼロである 配列
・特別な値 NULL (値がセットされていない変数を含む)
・空のタグから作成された SimpleXML オブジェクト
その他の値は全て TRUE とみなされます (全ての resource および NAN を含みます)。
PHP: 論理型 (boolean) - Manual

isset

isset — 変数がセットされていること、そして NULL でないことを検査する
---
var が存在して NULL 以外の値をとれば TRUE、 そうでなければ FALSE を返します。
---
注意: これは、関数ではなく 言語構造のため、可変関数 を用いて コールすることはできません。
PHP: isset - Manual

empty

empty — 変数が空であるかどうかを検査する
---
var が存在し、かつその値が空や0でなければ FALSE を返します。 それ以外の場合は TRUE を返します。

次のような値は空であるとみなされます。

"" (空文字列)
0 (整数 の 0)
0.0 (浮動小数点数の 0)
"0" (文字列 の 0)
NULL
FALSE
array() (空の配列)
---
注意: これは、関数ではなく 言語構造のため、可変関数 を用いて コールすることはできません。
PHP: empty - Manual

is_null

is_null — 変数が NULL かどうか調べる
---
var が null の場合に TRUE、 それ以外の場合に FALSE を返します。
PHP: is_null - Manual

補足

・null値を持つ変数に isset() 関数を適用すると、false が返る。
・否定の ! と empty() 関数の挙動は同一である。! は empty() のエイリアス?
---
なお、明確に「空の配列」を判定したい時は以下のようにすべき。
is_array($arr) && empty($arr)
PHP :: 否定の!、is_null()、isset()、empty() の挙動の違い [Tipsというかメモ]

配列関係もいい加減なコードをかいてると、意外とはまる。

スポンサーリンク
タグ#PHP