比較一覧
|値 or 要素|型||isset |is_null |empty |if($var)||!empty
---|---|---|---|:-:|:-:|:-:|:-:|---|:-:|
1|$var|未定義
(null)||false|error
(true)|true|error
(false)||false
2|$var = NULL|null||false|true|true|false||false
3|$var = "";|string||true|false|true|false||false
4|$var = 0;|int||true|false|true|false||false
5|$var = "0";|string||true|false|true|false||false
6|$var = 1|int||true|false|false|true||true
7|$var = "1";|string||true|false|false|true||true
8|$var = array()|array||true|false|true|false||false
9|$var = array(1)|array||true|false|false|true||true
解説1
isset(公式)
empty(公式)
empty($var) は !isset($var) || $var == false と同義(公式より)
!empty($var) は isset($var) && $var == true と同義。
・!isset()をis_nullの代わりに使うほうがセーフティ。
・!emptyはnullチェック と if($var) のダブルチェック。
・青字部分の$var=0、$var="0"に気をつけてください。
まとめ
・issetは未定義を含む、nullチェック。
・emptyは未定義を含む、値がないときのチェック。
・if($var)は未定義チェックなしの値があるときのチェック。
・!emptyは未定義チェックありの値があるときのチェック。
・青字の判定部分は__かなり微妙__で、数値的な0や文字列の"0"がないものと判定されます。
クラス内変数
|値 or 要素|型||isset |is_null |empty |if($var)||!empty
---|---|---|---|:-:|:-:|:-:|:-:|---|:-:|
1|$var|未定義
(null)||false|true|true|false||false
*|以下同上
getter 比較一覧
|値 or 要素|型||isset |is_null |empty |if($var)||!empty
---|---|---|---|:-:|:-:|:-:|:-:|---|:-:|
1|$var|未定義
(null)||false|true|true|false||false
2|$var = NULL|null||false|true|true|false||false
3|$var = "";|string||false|false|true|false||false
4|$var = 0;|int||false|false|true|false||false
5|$var = "0";|int||false|false|true|false||false
6|$var = 1;|int||false|false|true|true||false
7|$var = "1";|int||false|false|true|true||false
8|$var = array()|array||false|false|true|false||false
9|$var = array(1)|array||false|false|true|true||false
解説2
getterでは打って変わって、!is_nullとif($var)が幸せになれそうです。
issetは全く機能しません。!is_nullを使用しましょう。
emptyも中身のある配列で挙動がおかしいので、素直にif($var)がよさそうです。
こちらも青字の$var=0、$var="0"と$var=array(1)には気を付けてください。
公式の比較表
LGTMお願いします!
ストックのついでにお願いします!
モチベーションがあがります!