`isset() is_null() empty()` の違い と 変数の理解 と

isset(), is_null(), empty() の違い

以下、比較してみた表

is_null()!empty()isset()empty()
$x = ""FALSEFALSETRUETRUE
$x = "0"FALSEFALSETRUETRUE
$x = 0FALSEFALSETRUETRUE
$x = 1FALSETRUETRUEFALSE
$x = NULLTRUEFALSEFALSETRUE
$x = FALSEFALSEFALSETRUETRUE
$x = TRUEFALSETRUETRUEFALSE
$x = array()FALSEFALSETRUETRUE
未定義 $xTRUEFALSEFALSETRUE

で、未定義 $xis_null() の組み合わせのみ Notice エラーが出る。 また if($x) と直接変数を突っ込んだ場合の動作は !empty と等しい… というわけではなく 未定義の変数を突っ込んだ場合に Notice が出る。 ということは… if($x) とするのはやめて if(!empty($x)) とすべき。 また、 if($x)if( (boolean) $x ) と同じ。 つまり if( $x ) === if( (boolean) $x ) ≒ if( !empty($x) )

  • is_null()! isset() とほぼ等価。引数が NULL であるときに TRUE を返す。ただし未定義の変数は NULL と解釈されるので TRUE となる(Noticeエラーがでる)
  • empty()! (boolean) とほぼ等価。未定義の変数をいれたときに Notice エラーを出さない点が違う。引数が空、あるいは 0 や 空文字, NULL, FALSAE, 配列の中身がないときに TRUE を返す。
  • isset()! is_null() とほぼ等価。未定義の変数をいれたときに Notice エラーを出さない点が違う。引数が NULL または 未定義の変数 を入れたときに FALSE を返す関数。

変数の理解

以下のリンクを読んでかなり分かったような。。

Share
関連記事