0
0

More than 1 year has passed since last update.

isset, empty, is_nullの違い微妙だから、書いてみる

Posted at

イマイチわかってないから、とりあえず書き出してみて理解する
何が違うんだ?
間違ってたら、小学生でもわかるように解説お願いします。

isset()

変数がセットされていて、それがNULLでないことを調べる
値が入っていればtrueになる、入ってなければfalse

変数がセットされていなかったらって表記したい時もあるから
その時は、!isset()ってつけることもあるみたい。
学習している講座でも使ってたんだけど、私の中ではempty()じゃダメなのか?ってなってる。

empty()

変数が空かどうかを調べる
空( 空文字、 0、 NULL、 FALSE、 空の配列 )だったらtureそれ以外はfalseになる。

is_null()

変数がNULLかどうかを調べる。
変数がNULLだったら、trueそれ以外だとfalseになる
変数がセットされていない場合の時もtrueを返すそうだが
セットされてる、されていないはisset()を使った方がいいんだって

表にまとめてみた

関数 未定義 NULL ””(空文字) ”abc”
isset false false true true true
empty true true true true false
is_null ture(Notice) true false false false

書きながらまとめてたら!isset()の件わかったかも

例えばフォーム作成の際の性別で0か1の判定を行い、男性と女性に設定していたとする。
その際、男性か女性か選択するので、0か1の値がセットされることになる。

<input type="radio" name="gender" value="0"
<?php if(isset($_POST['gender']) && $_POST['gender'] === '0') ; ?>男性
<input type="radio" name="gender" value="1"
<?php if(isset($_POST['gender']) && $_POST['gender'] === '1') ; ?>女性

よし、バリデーション機能も追加しよう!となり、empty()を使用するとしよう。
変数が空だったら、trueだがempty()の空には0も含まれている・・・。
そうなってくると男性を選択した場合にエラーが出てしまう問題が発生するわけだ
なるほどなるほど。
だから、値が何もセットされていない場合の!isset()が必要になって来るわけね。

まとめ

自分の解釈用で、書き出してみたんで
すんごく、わかりづらいかもですがこんな感じで(間違いあったら、指摘お願いします!)
気になった時に投稿していくと思うので、どうぞよろしくです♪

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0