web-dev-qa-db-ja.com

PHPの「isset()」と「!empty()」の違いは何ですか?

isset()!empty()の違いがわかりません。

変数が設定されている場合、それは空でないことと同じではないのですか?

32
Vitalynx

[〜#〜] isset [〜#〜]は、変数が設定されているかどうかを確認します。つまり、変数がNULL以外の値であるか、値が割り当てられていないかどうかを確認します。 ISSETは、変数が存在し、NULL以外の値を持つ場合、TRUEを返します。つまり、 ""、0、 "0"、またはFALSEが割り当てられた変数が設定されているため、TRUEの場合はISSETになります。

[〜#〜] empty [〜#〜]は、変数が空かどうかを確認します。空は、 ""(空の文字列)、0(整数)、0.0(浮動小数点) `、" 0 "(文字列)、NULL、FALSE、array()(空の配列)、および" $ var; "として解釈されます。 (宣言された変数ですが、クラスに値がありません。

詳細については、 この記事 を参照してください

46
Nambi

出典:http://php.net/manual/en/types.comparisons.php このページは、empty()is_null()isset()

The picture showing complete comparison here

15
Black Mamba

型比較表は、これらの演算子に関するすべての質問に対する答えを提供します

http://php.net/manual/en/types.comparisons.php

4
Prashant16

isset —変数が設定されていてNULLでないかどうかを判断します。

!empty —変数が空ではないかどうかを判断します。

0
user3102083

Issetは、変数が設定されていない場合、またはnullの場合はfalseを返し、変数が設定されていてnullでない場合はtrueを返します。

!emptyは、変数が設定されていて空ではない場合にtrueを返します。空の文字列、空の配列、「0」、0、およびfalseは、空として定義されます。

0
joy

そしてもう一つの発言。 empty()は、変数も存在するかどうかを確認します。つまり宣言されていない変数に対してempty()を実行した場合、エラーは表示されず、empty()は 'true'を返します。したがって、次に変数が空かどうかを確認する必要がある場合は、isset()を避けることができます。

そう

isset($var) && !empty($var)

に等しくなります

!empty($var)
0
Andrey P.