ホームページ >バックエンド開発 >PHPチュートリアル >PHPにおけるisset()とempty()の違いの詳しい説明

PHPにおけるisset()とempty()の違いの詳しい説明

伊谢尔伦
伊谢尔伦オリジナル
2016-12-01 11:02:111041ブラウズ

PHP 言語を学習することで、PHP 言語が関数ベースの HTML スクリプト言語であることを理解する必要があります。巨大な関数ライブラリが PHP 言語関数の実装をサポートします。以下では、PHP 関数 isset() と empty() の関連した使用法を紹介します。

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を返します
If 変数が存在し、その値が ""、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))。

以下は、私たちがテストした 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 を返します。 is not Definition, empty() will return TRUE, isset() will return FLASE


マニュアルでの empty() の説明は次のとおりです:

説明 bool empty(mixed var)

var が空でない場合またはゼロ以外の値の場合、empty() は 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 関数を使用します



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