PHPを使っていくと疑問に思うのが is_null関数 と isset関数 の違いって何だろう?ってことです。
この2つは何か似てるしどうやって使い分ければいいのか分かりずらいですよね(特にPHP初心者)
という訳でこの2つの違いと使い分け方を説明してみたいと思います。
is_null は変数が NULL かどうかを判別するのに使う
まず最初はis_null関数で、これは変数に NULL という値が入っているか確かめるためのものです。
NULLって言葉はPHP以外でも聞くと思いますが、null型に属している唯一の値ということになっています。
まあ値を持たないことを示す値ってことですよね。(←ややこしい・・・w)
使い方は簡単で次のように変数を渡すだけ
1 |
is_null($a); |
変数にNULLが入っていれば TRUE 、なければ FALSE を返すという単純なものです。
is_nullの使用例
is_nullは変数が存在しているという状態でその値がNULLかどうかを判断するのに使います。
なので使用例として考えられるのは次のようなコード
1 2 3 4 5 6 |
$days = ['Sun', NULL, 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; foreach( $days as $day ){ if( ! is_null($day) ){ print_r( $day . ' ' ); } } |
このコードだと配列内にNULLがないかどうかを調べてますね。
こういう風にあらかじめ変数にNULLが含まれると予想できる場合に使われます。
ただし注意点として次のように未定義の変数に対して使うのはNG
1 |
is_null( $undefined ); |
これを実行すると次のようなエラーメッセージが出てしまいます。
1 |
PHP Notice: Undefined variable: undefined in xxx.php on line 1 |
PHPでは未定義定数にはNULLは代入されてないので、当然変数を参照できなくてエラーになるという訳です。
isset は変数が未定義かどうか判別するのに使う
お次はisset関数で、これは変数が未定義をチェックするためのものになっています。
未定義というのはコード中のどこを探しても変数が見つからないということです。
この関数も使い方は簡単で次のように変数を渡すだけ
1 |
isset($a); |
変数が定義済みなら TRUE 、変数が未定義なら FALSE の値が返ってきます。
issetの使用例
issetの使用例として考えられるのは次のようなコード
1 2 3 4 5 6 7 8 9 10 11 |
$fruits = array( 'apple' => 'リンゴ', 'banana' => 'バナナ', ); if( isset( $fruits['cherry'] ) ){ print_r( 'cherry exists in fruits' ); } else{ print_r( 'cherry NOT exists in fruits' ); } |
このコードでは連想配列でキーも値も定義されてないかもしれない変数にアクセスできるか確かめています。
このコードの実行結果は次の通り
1 |
cherry NOT exists in fruits |
連想配列内に 'cherry' なんてキーは無いのでこのように表示されるという訳です。
issetはこのように存在するかどうか不確かな変数をチェックするのに役立ちます。
ここまでのまとめ
まずisset関数とis_null関数の違いをまとめると次の通り
- is_null関数
変数にNULLという値が入っているかどうか確かめる
- isset関数
変数がコード中で定義されているかどうか確かめる
NULLという値をチェックすることと変数が定義されているかを調べるのは全く別物です。
なので次のような感じで使い分けるのがベスト
- 変数が存在すると分かっている場合
is_null関数を使う
例 : 配列内にNULLの値が含まれていないかを調べるなど - 変数が存在するか不確かな場合
isset関数を使う
例 : 連想配列内で任意のキーの値があるか調べるなど
どちらも似ているからと言って適当に使い分けないようにしたいですね。
ということでis_null関数とisset関数の違いと使い分け方については以上です。
ではでは(・ω・)ノ゛