最近、プロジェクトのソースコードを読んでいると、ソースコード内でempty、isset、is_null関数(言語機能)が無差別に使用されており、明らかに落とし穴があることがわかりました。これらを正しく理解していないと、その後の開発に落とし穴が生じる可能性があります。
1.empty の使用法
bool empty (混合 var)
var が空でない値またはゼロ以外の値の場合、empty() は FALSE を返します。つまり、""、0、"0"、NULL、FALSE、array()、var $var; および属性のないオブジェクトは、var が空の場合、TRUE が返されます
2.isset ()
isset -- 変数が設定されているかどうかを確認します
説明
bool isset (mixed var [,mixed var [, ...]])
var が存在する場合は TRUE を返し、存在しない場合は FALSE を返します。
unset() を使用して変数が解放された場合、それは isset() ではなくなります。 isset() を使用して NULL に設定された変数をテストすると、FALSE が返されます。また、NULL バイト (「0」) は PHP の NULL 定数と同等ではないことに注意してください。
注: 変数が存在しない場合、isset() と empty() はエラーを報告しません; is_null()、is_numeric() はエラーを報告します
3 つの要素 [0,'',null を区別する方法] ] は次の配列にありますか? (1) 違い 0:
$a = 0; isset($a) && is_numeric($a) === true
(2) 違い ''
$a = ''; empty($a) && $a=== ''
(3) 違い null
$a = null; is_null($a);
さらに、送信時に検出する必要がある場合があります。 $_REQUEST['status'] = 0 の場合は、empty($_REQUEST['status']) を使用して true を返しますが、変数が存在するかどうかを判断するには isset($_REQUEST['status']) を使用します。 not empty
3. is_null():
bool is_null (mixed $var) (php.net公式ドキュメントの関数定義)
パラメータが以下の3つの条件を満たす場合、is_null()はTRUEを返します。それ以外の場合は、FALSE
1 になります。値が割り当てられていません
3。これは、変数 unset() の後、定義されていないことと同じです。
いくつかの例を見てみましょう:
$myvar = NULL; var_dump(is_null($myvar)); // TRUE $myvar1; var_dump(is_null($myvar1)); // TRUE Notice: Undefined variable $num = 520; unset($num); var_dump(is_null($num)); //TRUE Notice: Undefined variable var_dump(is_null($some_undefined_var)); //TRUE Notice: Undefined variable $myvar = 0; is_null($myvar); // FALSE $myvar = FALSE; is_null($myvar); // FALSE $myvar = ''; is_null($myvar); // FALSE
php の isset と empty の違いの詳細な説明
phpパフォーマンスの最適化: isset () は strlen() よりも高速です
以上がPHPにおけるempty,isset,is_nullの使い方と違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。