PHPによる関数の正しい比較
PHPにおいて、入力されたもの、データベースから返されたものを比較する正しい方法を解説します。
関数による比較の種類
比較によく使われるPHPの関数は
is_numeric()
数値(文字列の数値も)がどうかをチェックする
is_null()
null(値を持たない)かどうかをチェックする
empty()
空かどうかチェックする
isset()
変数が存在するか、nullではないことをチェックする
is_string()
文字列かどうかをチェックする
is_int()
整数かどうかをチェックする
is_array()
配列かどうかをチェックする
count()
配列の要素数を数字で返す
また、配列でもなくインターフェイスを実装したオブジェクトでもない場合、1と返される
NULLの場合、0が返される
比較
is_nullとemptyの違い
is_null | empty | |
---|---|---|
"" | false | true |
"0" | false | true |
0 | false | true |
0.0 | false | true |
NULL | true | true |
array() | false | true |
array(1) | false | false |
表のように、0(文字列を含む)が入った場合と空の配列の時emptyはtrueにしてしまいます。
よってis_nullの方がより細かい判定ができるということになります。
is_nullとissetの違い
is_null | isset | |
---|---|---|
"" | false | true |
"0" | false | true |
NULL | true | false |
array() | false | true |
array(1) | false | true |
表のようにis_nullとissetは真逆になっていることがわかります。
issetは空文字や空の配列であっても存在していることを示しています。よって、配列の存在判定をする際はis_array()でさらに要素があるかどうかを判定したい場合はcount()を使うといいと思います。
is_nullと!isetの違い
変数の読み出しの点では動作が異なるが、null値かどうかを返す結果は同じです。
3.大切なこと
大切なことは返ってくるものの可能性を考えて使うことです。この表を見ても覚えられないので、混乱することもあるかもしれませんが、自分で実行した結果を見て比較することも大切だと思います。