自分でよくわからなくなっちゃるので、
empty()
と
!
の違いを書いておきますね。
empty()の方は、PHP公式サイトにも記載のある通り
var が存在し、かつその値が空や0でなければ FALSE を返します。 それ以外の場合は TRUE を返します。
次のような値は空であるとみなされます。
"" (空文字列) 0 (整数 の 0) 0.0 (浮動小数点数の 0) "0" (文字列 の 0) NULL FALSE array() (空の配列) $var; (変数が宣言されているが、値が設定されていない)
ということでわかりやすいと思います。
だったら、
if(!$hoge){ }
との違いは?
というのが調べた趣旨になります。
if (!$value)」は「if ($value == false)」の略だそうですね。
(出典 こちらのサイト https://php1st.com/1402/)
じゃ、何がfalseなの?と言われますと、こちらもPHPの公式サイトにございます。
http://php.net/manual/ja/language.types.boolean.php
boolean に変換する場合、次の値は FALSE とみなされます。
boolean の FALSE integer の 0 (ゼロ) float の 0.0 (ゼロ) 空の文字列、 および文字列の "0" 要素の数がゼロである 配列 特別な値 NULL (値がセットされていない変数を含む) 空のタグから作成された SimpleXML オブジェクト
その他の値は全て TRUE とみなされます (全ての resource および NAN を含みます)。
で、一応実行してみました。
皆さんが気になる0, ””(空の文字列), NULLについて書いておきますね。
$hoge = null; if(!$hoge){ echo "ほげ"; }else{ echo "ほげない"; }
上記の出力
ほげ
$hoge = 0; if(!$hoge){ echo "ほげ"; }else{ echo "ほげない"; }
上記の出力
ほげ
$hoge = ""; if(!$hoge){ echo "ほげ"; }else{ echo "ほげない"; }
上記の出力
ほげ