自分でよくわからなくなっちゃるので、
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 "ほげない";
}
上記の出力
ほげ
