比較一覧
|値 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お願いします!
ストックのついでにお願いします!
モチベーションがあがります!