isset と !empty の使い分け

値があるかどうかの判別

if(!empty($○○○))


if(isset($○○○))

の使い分けについて。

前の記事でもチラリと触れた、以下の通り・・


 : isset() : !empty()
—————————–
未定義   :  FALSE  :  FALSE
NULL     :  FALSE  :  FALSE
FALSE    :  TRUE   :  FALSE
空文字   :  TRUE   :  FALSE
空配列   :  TRUE   :  FALSE
0       :  TRUE   :  FALSE
‘0’       :  TRUE   :  FALSE
‘0a’      :  TRUE   :  TRUE
unset後   :  FALSE  :  FALSE   

 

ということですが、
「!empty」のほうが判定が厳しいんだなくらいに思ってました・・汗

ようやく具体的に影響がでる部分にぶちあたったのでメモ。

『もしも、POSTでデータを受け取った時』という条件分岐にて・・・!

①if (!empty($_POST[‘data’]))
{~~


②if (isset($_POST[‘data’]))
{~~

($_POSTの部分は、$_REQUESTでも。)

上記2パターンありますが、さて、
もしも$_POST[‘data’]できちんと「空」の値が渡ってきたときどうするでしょう?

『空』というデータをきちんと受け取って何かのデータを空にしたり処理したい場合は要注意。

①の「!empty」だと、空文字=FALSE(値がない)と判断されて、
続く命令は実行されません。


②の「isset」だと、空文字=TRUE(値アリ)と判断されて、
続く指示は実行されます。

私は「空」を受け取ったらクッキーを空にしたかったのに、
まんまとif(!empty~~ で書いていたのでなぜか空にならない!!と騒いでいました。

ところで。
PHPとかプログラムばっかりさわっていると
CSSを全然触りたくなくなるのはなぜだろう・・・
—–

コメント

タイトルとURLをコピーしました