ホームページ  >  記事  >  バックエンド開発  >  PHP の isset() と empty() の違い

PHP の isset() と empty() の違い

迷茫
迷茫オリジナル
2017-03-26 11:16:471336ブラウズ

PHP の isset() 関数は、通常、変数が設定されているかどうかを検出するために使用されます
形式: bool isset (mixed var [,mixed var [, ...]])

関数: 変数が設定されているかどうかを検出します

戻り値:

変数が存在しない場合はFALSEを返す
変数が存在しその値がNULLの場合もFALSEを返す
変数が存在しその値がNULLでない場合はTRUEを返す
複数の変数をチェックする場合同時に、各単一項目は前の要件を満たします。 TRUE のみを返します。それ以外の場合、結果は FALSE になります。
バージョン: PHP 3、PHP 4、PHP 5
その他の説明:
unset() を使用して変数を解放した後、もはや isset() です。
PHP 関数 isset() は変数にのみ使用でき、他のパラメータを渡すと解析エラーが発生します。
定数が設定されているかどうかを検出するには、define() 関数を使用します。

PHPのempty()関数は、値が空かどうかを判定します

形式: bool empty (mixed var)

関数: 変数が空かどうかを確認します

戻り値:

変数が存在しない場合はTRUEを返します
変数が存在し、その値が ""、0、"0"、NULL、FALSE、array()、var $var; および属性のないオブジェクトの場合、TRUE が返されます
変数が存在し、その値が存在しない場合""、0、"0"、NULL、FALSE、array()、var $var; および属性のないオブジェクトは FALSE を返します
バージョン: PHP 3、PHP 4、PHP 5
その他の命令:
empty() value =!(boolean) var ですが、変数が未定義であるため、警告メッセージは生成されません。詳細については、「ブール値への変換」を参照してください。
empty() は変数にのみ使用できます。他のパラメータを渡すと Paser エラーが発生し、操作が終了します。
定数が設定されているかどうかを検出するには、define() 関数を使用します。
例: empty() と isset() の単純な比較

<?php 
$var = 0; 
// 结果为 true,因为 $var 为空 
if
 (empty($var)) { 
echo
 &#39;$var is either 0 or not set at 
all
&#39;; 
} 
// 结果为 false,因为 $var 已设置 
if (!isset($var)) { 
echo &#39;$var is not set at all&#39;; 
} 
?>


注: これは関数ではなく言語構造であるため、変数関数から呼び出すことはできません。
注: empty() は変数のみを検出します。変数ではないものを検出すると解析エラーが発生します。つまり、次のステートメントは機能しません: empty(addslashes($name))。
以下は、Script House によってテストされた isset 関数と empty 関数の詳細なサンプル コードです。これを読むと、基本的には同じです:

<?php 
error_reporting
(E_ALL); 
echo &#39;<B>未定义$var</b><Br>&#39;; 
echo "isset测试:<Br>"; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 
echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else
 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
echo &#39;----------------------------------<br>&#39;; 
echo &#39;<B>$var = \&#39;\&#39;</b><Br>&#39;; 
echo "isset测试:<Br>"; 
$var = &#39;&#39;; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 
echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
echo &#39;----------------------------------<br>&#39;; 
echo &#39;<B>$var = 0</b><Br>&#39;; 
echo &#39;isset测试:<Br>&#39;; 
$var = 0 ; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 
echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
echo &#39;----------------------------------<br>&#39;; 
echo &#39;<B>$var = null</b><Br>&#39;; 
echo &#39;isset测试:<Br>&#39;; 
$var = null ; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 
echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
echo &#39;----------------------------------<br>&#39;; 
echo &#39;<B>$var ="php"</b><Br>&#39;; 
echo &#39;isset测试:<Br>&#39;; 
$var = "php"; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 
echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
?>

PHP を使用してページ プログラムを作成する場合、変数処理関数を使用して決定することがよくあります。 PHPページの最後 パラメータの特定の変数値が空かどうか 最初はempty()関数の使用に慣れていましたが、いくつか問題が見つかったので、isset()関数に切り替えました。もう存在しませんでした。
名前が示すように、empty() 変数が「空」かどうかを判断する、isset() 変数が設定されているかどうかを判断します。このいわゆる「名前のとおり」が、最初に少し回り道をさせた理由です。変数の値が 0 に等しい場合、empty() も true (True) になるため、このようなことが起こります。 いくつかの驚き。 empty() と isset() が判明しました これらはどちらも変数処理関数であり、変数が設定されているかどうかを判断するために使用されますが、いくつかの違いがあります。empty は変数が空かゼロかどうかも検出します。変数値が0の場合はempty() この変数は空に等しいとみなされ、これは設定がないことと同じです。
たとえば、$id 変数を検出するには、$id=0 の場合、empty() と isset() を使用して、変数 $id が設定されているかどうかを検出します。両方とも異なる値を返します。empty() は、あると考えます。設定なし、isset() $id の値を取得可能:

$id=0; 
empty($id)?
print
 "It&#39;s empty .":print "It&#39;s $id ."; 
//结果:It&#39;s empty . 
print "<br>"; 
!isset($id)?print "It&#39;s empty .":print "It&#39;s $id ."; 
//结果:It&#39;s 0 .

これは、変数処理関数を使用する場合、変数の値が 0 になる可能性がある場合、empty() を使用する場合は注意することを意味します。現時点では isset に置き換えるのが賢明です。
PHP ページの URL 末尾パラメーターが id=0 である場合 (例: test.php?id=0)、次のように比較してみます。

if(empty($id)) $id=1; 0、id も 1 になります
if(!isset($id)) $id=1; - id=0 の場合、id は 1 にはなりません

上記の推論を検出するには、次のコードを個別に実行できます。 if(empty($id )) $id=1; // 1 を取得する

if(!isset($id)) $id=1; // 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 が空でない場合、またはゼロ以外の値の場合、空 () は FALSE を返します。つまり、""、0、"0"、NULL、FALSE、array()、var $var;、およびプロパティを持たないオブジェクトは空とみなされ、var が空の場合は TRUE が返されます。

マニュアルでの isset() の説明は次のとおりです:
isset() は変数が設定されているかどうかを検出します

説明 bool isset (mixed var [,mixed var [, ...]] )

Returns var が存在する場合は TRUE、それ以外の場合は FALSE を返します。

unset() を使用して変数が解放された場合、それは isset() ではなくなります。 isset() を使用して NULL に設定された変数をテストすると、FALSE が返されます。また、NULL バイト (「?」) は PHP の NULL 定数と同等ではないことに注意してください。
警告: isset() は変数でのみ使用できます。他のパラメータを渡すと解析エラーが発生するためです。定数が設定されているかどうかを確認したい場合は、define()関数を使用できます。


変数が宣言されているかどうかを判定したい場合はisset関数を使うことができます 変数にデータが代入され空でないかどうかを判定したい場合はempty関数を使うことができます
こんなことをしたい場合変数が存在するか空でないかを判断するには、まず isset 関数を使用し、次に empty 関数を使用します

以上がPHP の isset() と empty() の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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