if(!$hoge)とif(!empty($hoge))の違い

PHP

自分でよくわからなくなっちゃるので、

 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 "ほげない";
 
 }

上記の出力

 ほげ
カテゴリーPHP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です