ホームページ  >  記事  >  バックエンド開発  >  PHPでのisset関数とempty関数の使用の違いは何ですか? (包括的な)

PHPでのisset関数とempty関数の使用の違いは何ですか? (包括的な)

不言
不言オリジナル
2018-08-27 17:16:251189ブラウズ

この記事でわかることは、PHP での isset 関数と empty 関数の使用の違いについてです。 (総合)一定の参考値があるので、困っている友人は参考にしていただければ幸いです。

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

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

戻り値:

変数が存在しない場合は、FALSE を返します。変数が存在し、その値が NULL の場合は、FALSE も返されます。
変数が存在し、値が NULL でない場合は、TRUE が返されます。
複数の変数を同時にチェックする場合、各項目が 1 つずつチェックされた場合にのみ 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() の戻り値 = !(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) になるため、いくつかの事故が発生します。 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; - 若 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; //得到 0

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

変数が空の文字列の場合、empty() は TRUE を返し、isset() は TRUE を返します。
変数が未定義の場合、empty() は TRUE を返します。 isset() will return FLASE;

マニュアルでの empty() の説明は次のとおりです。
Description bool empty(mixed var)

var が空でない値またはゼロ以外の値の場合、empty() は FALSE を返します。つまり、""、0、"0"、NULL、FALSE、array()、var $var;、およびプロパティを持たないオブジェクトは空とみなされ、var が空の場合は TRUE が返されます。
マニュアルの isset() の説明は次のとおりです。

isset() は、変数がis set


Description bool isset (mixed var [,mixed var[, ...]])


var が存在する場合は TRUE を返し、存在しない場合は FALSE を返します。


変数が unset() を使用して解放された場合、その変数は isset() ではなくなります。 isset() を使用して NULL に設定された変数をテストすると、FALSE が返されます。また、NULL バイト (「?」) は PHP の NULL 定数と同等ではないことに注意してください。

警告: isset() は変数でのみ使用できます。他のパラメータを渡すと解析エラーが発生するためです。定数が設定されているかどうかを確認したい場合は、define()関数を使用できます。

isset 関数は、変数が宣言されているかどうかを確認する場合に使用できます。変数にはデータが割り当てられていますが、空ではありません。空関数
変数が存在するが空ではないことを確認したい場合は、最初に isset 関数を使用し、次に空関数を使用します。

関連する推奨事項:

PHP の empty() 関数と isset(() ) Function

##PHP isset() 関数と empty() function_PHP の違いチュートリアル######

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

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

関連記事

続きを見る