早見表
調べてたら、表にまとめてるのがわかりやすかったので、表を引用?しました。あと、自身が必要なものも追記しました。
値 | if($var) | isset | empty | is_null |
$var=1 | true | true | false | false |
$var=""; | false | true | true | false |
$var="0"; | false | true | true | false |
$var=0; | false | true | true | false |
$var=NULL; | false | false | true | true |
$var | false | false | true | true |
$var=array() | false | true | true | false |
$var=array(1) | true | true | false | false |
引用:
・PHPのisset,empty,is_null - モトクロスとプログラムと粉砕骨折と
・PHP isset, empty, is_null の違い早見表
・isset 、 empty は関数ではなく言語構造 =>速い
・is_nullは関数
strlenとかも付け足したい気分だけど・・。
個人的には正しく使えてるかは自身はない。速度とかを意識するのなら、言語構造のものを使ったほうが処理速度は速い。
if($var)
boolean に変換する場合、次の値は FALSE とみなされます。
・boolean の FALSE
・integer の 0 (ゼロ)
・float の 0.0 (ゼロ)
・空の文字列、 および文字列の "0"
・要素の数がゼロである 配列
・特別な値 NULL (値がセットされていない変数を含む)
・空のタグから作成された SimpleXML オブジェクト
その他の値は全て TRUE とみなされます (全ての resource および NAN を含みます)。
PHP: 論理型 (boolean) - Manual
isset
isset — 変数がセットされていること、そして NULL でないことを検査する
---
var が存在して NULL 以外の値をとれば TRUE、 そうでなければ FALSE を返します。
---
注意: これは、関数ではなく 言語構造のため、可変関数 を用いて コールすることはできません。
PHP: isset - Manual
empty
empty — 変数が空であるかどうかを検査する
---
var が存在し、かつその値が空や0でなければ FALSE を返します。 それ以外の場合は TRUE を返します。次のような値は空であるとみなされます。
"" (空文字列)
0 (整数 の 0)
0.0 (浮動小数点数の 0)
"0" (文字列 の 0)
NULL
FALSE
array() (空の配列)
---
注意: これは、関数ではなく 言語構造のため、可変関数 を用いて コールすることはできません。
PHP: empty - Manual
is_null
is_null — 変数が NULL かどうか調べる
---
var が null の場合に TRUE、 それ以外の場合に FALSE を返します。
PHP: is_null - Manual
補足
・null値を持つ変数に isset() 関数を適用すると、false が返る。
・否定の ! と empty() 関数の挙動は同一である。! は empty() のエイリアス?
---
なお、明確に「空の配列」を判定したい時は以下のようにすべき。
is_array($arr) && empty($arr)
PHP :: 否定の!、is_null()、isset()、empty() の挙動の違い [Tipsというかメモ]
配列関係もいい加減なコードをかいてると、意外とはまる。