ホームページ >バックエンド開発 >PHPチュートリアル >PHP の学習方法: PHP empty() と isset() の違い

PHP の学習方法: PHP empty() と isset() の違い

WBOY
WBOYオリジナル
2016-06-13 12:02:05724ブラウズ

PHP の学習方法: PHP empty() と isset() の違い

PHP でページ プログラムを作成するとき、私はよく変数処理関数を使用して、PHP ページの最後の変数値が空かどうかを判断します。私は empty() 関数の使用に慣れていましたが、いくつかの問題が見つかったので、isset() 関数に切り替えたところ、問題はなくなりました。

名前が示すように、empty() は変数が「空」かどうかを判断し、isset() は変数が設定されているかどうかを判断します。いわゆる「名前のとおり」ということで、最初に少し回り道をしました。変数の値が 0 の場合、empty() も真 (True) になるため、いくつかの事故が発生します。 empty() と isset() は両方とも変数処理関数であり、どちらも変数が設定されているかどうかを判断するために使用されますが、特定の 違い があることがわかりました。 🎜>empty は、変数が空かゼロかどうかも検出します。変数値が 0 の場合、empty() は変数が空であることと同等、つまり設定されていないことと同等であるとみなします。

たとえば、$id 変数を検出するには、$id=0 の場合、empty() と isset() を使用して、変数 $id が設定されているかどうかを検出します。どちらも異なる値を返します。empty() の値は設定がないことを考慮し、isset() は $id の値を取得できます:

$id=0;
($id)?print " 空です。":print $id ."; > 印刷
"
"
;
!isset($id)?print
"
空です。":print "$id です。"; //結果: 0 です。


これは、変数処理関数を使用する場合、変数の値が 0 になる可能性がある場合、empty() を使用するときは注意し、この時点で isset に置き換える方が賢明であることを意味します。

PHP ページの URL 末尾パラメーターが id=0 である場合 (例: test.php?id=0)、次のように比較してみます:

if (($id)) $id=1; - id=0の場合、id も 1
の場合
(!isset($id)) $id=1; - id=0の場合、id は 1 にはなりません
次のコードを個別に実行して、上記の推論を検出できます:


if(empty( $id)) $id=1;
print
$ id; // 1

if
( !isset($id)) $id=1;
print
$id //get 0



それらの接続について説明すると、empty() と isset() の機能は両方とも変数が設定されているかどうかを判断することです。さまざまなプロセスには大きな類似点があり、その関係性が十分に理解されていないためです。 empty() と isset() の 2 つの関数自体だけを考えると、別の角度から見るとさらに混乱するでしょう。 empty() と isset() の処理対象は未定義変数0空文字列に過ぎません。
変数が 0 の場合、empty() は TRUE を返し、isset() は TRUE を返します。

変数が空の文字列の場合、empty() はTRUE を返すと、isset() は TRUE を返します。

変数が未定義の場合、empty() は TRUE を返し、isset() は FLASE を返します。マニュアル empty() の説明は次のとおりです。
説明 bool empty(mixed var)
var が空以外またはゼロ以外の値の場合、empty()


を返します。
誤り。つまり、、""、0、"0"、NULLFALSE 、array()、var $var; および属性のないオブジェクトは空であると見なされ、TRUE を返します。 。 マニュアルでの isset() の説明は次のとおりです。 isset() は変数が設定されているかどうかを検出します 説明 bool isset (mixed var [,mixed var [, ...] ] )
var が存在する場合は

TRUE
を返し、それ以外の場合は FALSE変数が unset() を使用して解放された場合、その変数は isset() ではなくなります。 isset() を使用して
NULL をテストすると、NULL バイト ("

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。