phpを実装していると空判定、null判定を書くことがありと思います。そんな時にemptyだっけ、issetだっけと迷いますよね。これの違いをしっかりと説明できる人ってなかなかいないのではないでしょうか。
私自身、よくわからなくなってしまうので、改めてまとめてみたいと思います。
空かどうか判定する4つの方法
- 空かどうか判定するempty
- 値があるか判定するisset
- nullかどうか判定するin_null
こちらの3つが値の存在を判定する方法になります。それでは、それぞれの使い方について説明していきます。
空かどうか判定するempty
empty()関数は変数の値をチェックするものです。変数の値が空かどうかを確認します。空の場合はtrue、値がある場合はfalseを返します。
empty()の使い方
empty関数を使った際に、どのように判定されるのか色々なパターンを説明します。
empty(""); // true
empty([]); // true
empty("0"); // true
empty(0); // true
empty($hoge) // true
empty([1,2]); //false
empty("a"); //false
empty(1); //false
上のサンプルにあるように、空文字や空配列、0がtrueと判定されます。
値があるか判定するisset
isset()関数は変数に値が入っているかどうかを確認します。入っているはtrue、空の場合はfalseを返します。empty()と逆と思われがちですが、どちらでもtrueと判定されるものもあるので、それぞれの特徴についてしっかり理解して使うようにしてください。
isset()の使い方
isset関数を使った際に、どのように判定されるのか色々なパターンを説明します。
isset(""); // true
isset([]); // true
isset("0"); // true
isset(0); // true
isset([1,2]); // true
isset("a"); // true
isset(1); // true
isset(null); // false
isset($hoge); // false
nullと宣言されていない変数のみがfalseと判定されます。
nullかどうか判定するin_null
is_null()は変数の値がnullかどうかを判定する関数です。こちらはisset()と返ってくる値が逆になります。
つまり、nullと宣言されていない変数のみがtrueと判定されます。
それぞれの使い道にあった使い方をしましょう
なんとなく、empty()を使うのではなく、そこにどんな値が入っていくる可能性があるのか、どんな判定をしたいのかを明確にした上で、それぞれを使い分けるようにしましょう。