empty は変数が「空」かどうかを判断し、isset は変数が設定されているかどうかを判断します。このいわゆる「名前のとおり」が、最初に少し回り道をさせた理由です。変数の値が 0 に等しい場合、empty() も真 (True) になるため、いくつかの事故が発生します。 empty と isset は両方とも変数処理関数であり、どちらも変数が設定されているかどうかを判断するために使用されますが、いくつかの違いがあることがわかりました。empty は変数が空かゼロかどうかも検出します。変数値が0の場合は空
この変数は空に等しいとみなされ、これは設定がないことと同じです。
たとえば、$id 変数を検出するには、$id=0 の場合、empty と isset を使用して変数 $id が設定されているかどうかを検出します。両方とも異なる値を返します。空は設定されていないことを意味します。 isset は $id の値を取得できます:
$id=0;
empty($id)?print "空です。":print "$id です。";
//結果: 空です。
print "
";
!isset($id)?print "空です。":print "$id です。";
//結果: 0 です。
これは、変数処理関数を使用する場合、変数の値が 0 になる可能性がある場合、empty を使用する場合には isset に置き換える方が賢明であることを意味します。
PHP ページの URL 末尾パラメータが id=0 である場合 (例: test.php?id=0)、次のように比較してみます。
if(empty($id)) $id=1; - id=0 の場合、id も 1 になります
if(!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