# PHP empty isset is_null の違い
| 値 | !!($var) | isset($var) | empty($var) | is_null($var) |
|---|---|---|---|---|
$var = 1 | true | true | false | false |
$var = "0" | false | true | true | false |
$var = 0 | false | true | true | false |
$var = "" | false | true | true | false |
$var = NULL | false | false | true | true |
$var = array() | false | true | true | false |
$var = array(1) | true | true | false | false |
$var = (object)[] | true | true | false | false |
$var = (object)[1] | true | true | false | false |
$var = 1;
var_dump(!!($var)); // true
var_dump(isset($var)); // true
var_dump(empty($var)); // false
var_dump(is_null($var)); // false
$var = [];
var_dump(!!($var)); // false
var_dump(isset($var)); // true
var_dump(empty($var)); // true
var_dump(is_null($var)); // false
$var = (object)[];
var_dump(!!($var)); // true
var_dump(isset($var)); // true
var_dump(empty($var)); // false
var_dump(is_null($var)); // false
文字列と数値を比較
php7 は文字列を数値に変換してから比較
php8 は数値を文字列に変換してから比較
| 比較 | PHP7 | PHP8 |
|---|---|---|
0 == "0" | true | true |
0 == "0.0" | true | true |
42 == "42" | true | true |
0 == "foo" | true | false |
0 == "" | true | false |
42 == "42foo" | true | false |
"0" == "0" | true | true |
"0" == "0.0" | true | true |
"0" == "foo" | false | false |
"0" == "" | false | false |
"42" == "42" | true | true |
"42" == "42foo" | false | false |
# isset
isset — 変数が宣言されていること、そして null とは異なることを検査する
つまりNULLではなければ、すべて true で返します。
isset 複数チェックする場合、AND として扱う
$a = "a";
$b = NULL;
var_dump(isset($a)); // true
var_dump(isset($a, $b)); // false
# empty
empty — 変数が空であるかどうかを検査する
var が存在し、かつその値が空 0 false でなければ、false を返します。
- 変数が存在しない場合でも警告しません
empty()は!isset($var) || $var == falseと同じ
empty()と isset()の違い
empty() は isset() より値が false かどうかをチェック
# is_null
is_null — 変数が null かどうか調べる
var が 宣言なしと null の場合に true、 それ以外の場合に false を返します。
# PHP isset, empty, is_null の違い早見表
| 値 | 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 |