PHP では、empty()、isset()、is_null() の 3 つの関数はすべて空かどうかを判断するために使用されますが、これら 3 つの関数を詳しく理解したい場合は、まだ多くの違いがあることがわかります。私が説明します みんながまとめてくれました。
is_null()、empty()、isset()、これらの関数と == "、== array() は実際の操作でよく使われます。関数は非常に似ているため、違いが見落とされます。注意しないと、作業に多大な問題を引き起こす可能性があります。これらの構造は、あなた自身とみんなの参考のために以下にリストされています。表現の正確性を考慮して、一部の説明は、中国語の時宜にかなった更新や翻訳を避けるために、オリジナルの英語マニュアルからのものです。マニュアルが不適切など
is_null()
is_null()、bool、パラメータが null の 3 つの条件を満たす場合、is_null() は TRUE を返します。
null タイプ、次の状況は NULL とみなされます:
定数 NULL が割り当てられています。
まだ値が設定されていません。
設定が解除されました()。
出典:http://cn2.php.net/manual/en/ language.types.null.php
いせと()
isset()、ブール値。パラメータが NULL ではなく設定されているかどうかを判断するために使用されます。パラメータには変数のみを使用できます。
変数が設定されていない場合、変数が unset() されている場合、または変数値が NULL の場合は FALSE を返し、それ以外の場合は TRUE を返します。つまり、NULL でない場合は isset のカテゴリに分類され、is_null() 関数の正反対になります。
複数のパラメータが渡された場合、交差部分が取得されます。つまり、すべてのパラメータが isset() と一致する場合にのみ TRUE が返されます。
ps:define()、bool、定数が設定されているかどうかを確認するために使用されます。
出典:http://cn2.php.net/manual/en/function.isset.php
空()
empty()、bool、主に変数が空かどうかを判断するために使用されます。パラメータには変数のみを使用できます。
以下の状況は空とみなされます:
コードは次のとおりです | コードをコピー |
"" (空の文字列) 0 (0は整数) 0.0 (浮動小数点数としての 0) 「0」(文字列としての0) ヌル 誤り array() (空の配列) var $var; (変数は宣言されていますが、クラスに値はありません) |
注: パラメーターが設定されていない変数の場合、変数は NULL とみなされ、エラーは報告されず、TRUE が返されます。
ただし、5.0.0 以降では、プロパティのないオブジェクトは空とみなされなくなることに注意してください。
出典:http://cn2.php.net/manual/en/function.empty.php
空かどうかを判断する他の方法は == "、 == array() などですが、これらは非常に限定的であり、何も言うことはありません。
テストの種類は次のとおりです:
コードは次のとおりです | コードをコピー |
$a; ?> 空() 最初は、空の var_dump 出力です:
プログラムの出力は次のとおりです: コードからわかるように、empty() はデータ型が空または false である限り true を出力します。 isset の出力をもう一度見てください: // 出力 isset() は、NULL か未定義かを判断するためにのみ使用できることがわかります。 最後はis_null: // 出力 |
is_null はリテラルです。
empty() はすべてのデータ型が空か false かを判断するために使用できるのに対し、is_null は基本的に isset と同じであり、NULL か未定義かを判断するためにのみ使用できることがわかります。isset、empty、is_null の違いの概要:
先ほど紹介したこと: 変数とパラメーターの型のチェック、これはこれら 3 つの関数の違いの基礎であり、最も見落とされやすいものでもあります。インターネット上でこれら 3 つの機能を比較した記事をたくさん見かけました。これらがカバーされることはほとんどありません。次にお話したいのは、両方が既存の変数をチェックするときの違いです。
コードをコピー | |
$a=100; $b=""; $c=null; //セットチェック echo "isset","$a=$a",isset($a)?"define":"undefine","rn"; echo "isset","$b=$b",isset($b)?"define":"undefine","rn"; echo "isset","$c=$c",isset($c)?"define":"undefine","rn"; 設定解除($b); echo "isset","$b",isset($b)?"define":"undefine","rn"; $b=0; エコー「rnrn」;
//空の小切手 echo "empty","$a=$a",!empty($a)?"no empty":"empty","rn"; echo "empty","$b=$b",!empty($b)?"no empty":"empty","rn"; echo "empty","$c=$c",!empty($c)?"no empty":"empty","rn"; 設定解除($b); echo "empty","$b",!empty($b)?"no empty":"empty","rn"; $b=0; エコー「rnrn」;
//is_null チェック echo "is_null","$a=$a",!is_null($a)?"no null":"null","rn"; echo "is_null","$b=$b",!is_null($b)?"no null":"null","rn"; echo "is_null","$c=$c",!is_null($c)?"no null":"null","rn"; 設定解除($b); echo "is_null","$b",is_null($b)?"no null":"null","rn";
|