PHP には似たような機能を持つ関数がたくさんありますが、微妙な違いがあります。この記事で分析したように、is_null、empty、isset の 3 つの関数は、多くの努力をしないと理解するのが簡単ではありません。これら 3 つの機能の違いについて詳しく知るために、ウェブマスターをフォローしてみましょう。
まずこれら 3 つの関数の機能説明を見てみましょう
isset は、変数がすでに存在するかどうかを判断します。変数が存在する場合は TRUE を返し、存在しない場合は FALSE を返します。
empty は変数が空かどうかを決定します。変数が空でない値またはゼロでない場合、empty() は FALSE を返します。つまり、""、0、"0"、NULL、FALSE、array()、var $var;、および属性のないオブジェクトは空とみなされ、変数が空の場合は TRUE が返されます。
is_null は変数が NULL かどうかを決定します
さて、これが一般的な説明ですが、この説明はすでに非常にわかりにくいので、以下の具体的な例で分析してみましょう。
これから、変数が "" または 0、または false または null である限り、これらの値がある限り、empty は true を返すことがわかります。
isset は変数が存在するかどうかのみを判断します。変数が null または未割り当てでない限り、戻り結果は true になります。 isset() を使用して NULL に設定された変数をテストすると、FALSE が返されます。 NULL バイト ("
そして is_null はまさに isset の逆結果です。これは isset の逆演算である !isset と考えることができます。上記の例から、次の結論を引き出すこともできます (これは将来プログラミングでよく使用されるでしょう):
$var は任意の型であると仮定します
empty($var) が true の場合、(bool)($var) は false になります。逆に。
is_null($var) が true の場合、isset($var) は false になります。逆に。
例:
$i=$j+1;
ここでの is_null($j) は true (変数 $j が事前に宣言されていないため、isset($j) は false であることがわかります)
他に注意すべき 2 つの点は :
(1) empty() は変数のみを検出します。変数ではないものを検出すると解析エラーが発生します。つまり、次のステートメントは機能しません: empty(addslashes($name))。(2) isset() は変数にのみ使用できます。他のパラメータを渡すと解析エラーが発生するためです。定数が設定されているかどうかを確認したい場合は、define()関数を使用します。 興味がありそうな記事