比較表
値 | 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 |
引用元
http://d.hatena.ne.jp/sngmr/20080209/1202520832
マニュアル:型の比較表
http://php.net/manual/ja/types.comparisons.php
isset, empty, is_null の動作まとめ
複雑な表を書き並べている記事が多いですが、実際は
null であれば
null でなければ
空値であれば
空値でなければ
の4種類の内容しか取り扱っていないものがほとんどであり、覚えるのが難しいなどと悩む必要はありません。
引用 mpywさんThaxデス
http://qiita.com/mpyw/items/51bf42fe1ad8a7e535aa
null値とunsetの原理的理解
PHPは、シンボルテーブルという変数名と値を結びつける、管理表を内部に持っている。
変数名 | 格納場所 |
---|---|
a | #0001番地 |
のような。※俺はテーブルかくな…と?
$a = null;
は
シンボルテーブル a → #0001番地 → nullという値
となる。
unset ( $a );
は
シンボルテーブル に a がない!
という状態になる。
$a='';
は、空文字文字の代入なので、PHPとしては当然に値を持っているものである。
シンボルテーブル a → #0001番地 → \0 という値
なお、null 値とは、 null 型 は、ある変数が値を持たないことを表す値、という若干矛盾する表現でしか表現できない特殊な値&型であるが、私見では、
null という値を持つ特殊な定数(変数)
と理解するのがよろしいかと思う。
引用元
http://www.cpa-lab.com/tech/097
参照:変数の代入は、値のコピーにあらず
http://www.cpa-lab.com/tech/030