イマイチわかってないから、とりあえず書き出してみて理解する
何が違うんだ?
間違ってたら、小学生でもわかるように解説お願いします。
isset()
変数がセットされていて、それがNULLでないことを調べる
値が入っていればtrueになる、入ってなければfalse
変数がセットされていなかったらって表記したい時もあるから
その時は、!isset()ってつけることもあるみたい。
学習している講座でも使ってたんだけど、私の中ではempty()じゃダメなのか?ってなってる。
empty()
変数が空かどうかを調べる
空( 空文字、 0、 NULL、 FALSE、 空の配列 )だったらtureそれ以外はfalseになる。
is_null()
変数がNULLかどうかを調べる。
変数がNULLだったら、trueそれ以外だとfalseになる
変数がセットされていない場合の時もtrueを返すそうだが
セットされてる、されていないはisset()を使った方がいいんだって
表にまとめてみた
関数 | 未定義 | NULL | 0 | ””(空文字) | ”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()が必要になって来るわけね。
まとめ
自分の解釈用で、書き出してみたんで
すんごく、わかりづらいかもですがこんな感じで(間違いあったら、指摘お願いします!)
気になった時に投稿していくと思うので、どうぞよろしくです♪